2016-09-08 2 views
0

У меня есть следующие EditText:андроид изменение цвета иконы из EditText

editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_arrow_bottom_right_black_18dp, 0); 

и я пытаюсь изменить цвет ic_arrow_bottom_right_black_18dp программно с помощью следующих методов:

 protected void setEditTextDisabled(EditText editText) { 
     editText.setFocusable(false); 
     editText.setClickable(false); 
     editText.setEnabled(false); 
     editText.setTextColor(ContextCompat.getColor(getContext(), R.color.package_components_group_text_color)); 
     if (editText.getTag(R.id.values_list_selected_ids) == null) { 
      if (editText.getTag(R.id.values_list_selected_ids) == null) { 
       editText.setFocusableInTouchMode(true); 
       Drawable[] d = editText.getCompoundDrawables(); 
       if (d.length == 4) { 
        d[2].setColorFilter(ContextCompat.getColor(getContext(), R.color.package_components_group_text_color), PorterDuff.Mode.SRC_ATOP); 
       } 
      } 
     } 
     Drawable background = editText.getBackground(); 

     if (background instanceof ShapeDrawable) { 
//   ((ShapeDrawable)background).getPaint().setStroke(2, getResources().getColor(R.color.package_components_group_text_color)); 
//   ((ShapeDrawable)background).getPaint().setStroke(2, getResources().getColor(R.color.package_components_group_text_color)); 

     } else if (background instanceof GradientDrawable) { 
      ((GradientDrawable)background).setStroke(2, getResources().getColor(R.color.package_components_group_text_color)); 
     } else if (background instanceof ColorDrawable) { 
//   ((ColorDrawable)background).setStroke(2, getResources().getColor(R.color.package_components_group_text_color)); 
     } 
    } 

    protected void setEditTextEnabled(EditText editText) { 
     editText.setEnabled(true); 
     editText.setFocusable(true); 
     editText.setClickable(true); 
     editText.setTextColor(ContextCompat.getColor(getContext(), R.color.black)); 
     if (editText.getTag(R.id.values_list_selected_ids) == null) { 
      editText.setFocusableInTouchMode(true); 
      Drawable[] d = editText.getCompoundDrawables(); 
      if (d.length == 4) { 
        d[2].setColorFilter(ContextCompat.getColor(getContext(), R.color.black), PorterDuff.Mode.SRC_ATOP); 
      } 
     } 

     Drawable background = editText.getBackground(); 
     if (background instanceof ShapeDrawable) { 
     // ((ShapeDrawable)background).getPaint().setColor(getResources().getColor(R.color.black)); 
     } else if (background instanceof GradientDrawable) { 
      ((GradientDrawable)background).setStroke(2, getResources().getColor(R.color.black)); 
     } else if (background instanceof ColorDrawable) { 
      // ((ColorDrawable)background).setColor(getResources().getColor(R.color.black)); 
     } 
    } 

вопрос является что выталкиваемая правая иконка EditText становится невидимой или белой, когда вызывается один из вышеперечисленных методов.

Прикрепленный файл a picture с изображением текста редактирования, который расположен с правой стороны.

ответ

0
This is the right answer 
Drawable ddd = getResources().getDrawable(R.drawable.ic_arrow_bottom_right_black_18dp); 
        Drawable drawable = DrawableCompat.wrap(ddd); 

        DrawableCompat.setTint(drawable, ContextCompat.getColor(getContext(), R.color.package_components_group_text_color)); 

        editText.setCompoundDrawables(null, null, drawable, null); 
1

Вы можете изменить цвет этой

EditText lineColorCode = (EditText) findViewById(R.id.line_color_code); 
int color = Color.parseColor("#AE6118"); //The color u want    
lineColorCode.setColorFilter(color); 

или вы можете сделать это

Drawable mDrawable = context.getResources().getDrawable(R.drawable.balloons); 
mDrawable.setColorFilter(new 
PorterDuffColorFilter(0xffff00,PorterDuff.Mode.MULTIPLY)); 
+0

метод setColorFilter недоступен для edittext, и я не пытаюсь изменить цвет edittext, но значок edittext. – aurelianr

+0

применить его на значке –

+0

Как я могу получить значок из текста редактирования? – aurelianr

0

Вы можете изменить цвет значка не фона, используя библиотеку Пикассо. Если вы можете получить значок в качестве ImageView, вы можете это сделать. Пикассо - очень простая и мощная библиотека.

Picasso.with(this) 
      .load(R.drawable.your_icon) 
      .transform(new ColorTransformation(getResources().getColor(R.color.your_color))) 
      .into(imageViewIcon);