Как получить цвет фона TextView?

Как получить цвет фона TextView?

Когда я нажимаю TextView, я хочу изменить цвет фона в соответствии с используемым цветом фона.

TextView не имеет такого метода, как:

getBackgroundResource() 

Изменить: я бы предпочел получить статус цвета фона.

Solutions Collecting From Web of "Как получить цвет фона TextView?"

Если вы хотите получить цветовой код фона, попробуйте это:

 ColorDrawable cd = (ColorDrawable) textView.getBackground(); int colorCode = cd.getColor(); 

ОТВЕТ:

Мы не можем использовать константы, такие как color.red или color.white.

Нам нужно понять, как

 int intID = (ColorDrawable) holder.tvChoose.getBackground().getColor(); 

Представляем его, и у нас есть поддельный идентификатор цвета

ColorDrawable.getColor() будет работать только с уровнем API выше 11, поэтому вы можете использовать этот код для его поддержки с самого начала. Я использую отражение ниже уровня API 11.

  public static int getBackgroundColor(TextView textView) { Drawable drawable = textView.getBackground(); if (drawable instanceof ColorDrawable) { ColorDrawable colorDrawable = (ColorDrawable) drawable; if (Build.VERSION.SDK_INT >= 11) { return colorDrawable.getColor(); } try { Field field = colorDrawable.getClass().getDeclaredField("mState"); field.setAccessible(true); Object object = field.get(colorDrawable); field = object.getClass().getDeclaredField("mUseColor"); field.setAccessible(true); return field.getInt(object); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return 0; } 

Я использовал это с помощью этого кода.

 myTextView.setBackgroundColor(colorcodehere); 

Что касается получения цвета фона, я нашел некоторые подходящие опции в этой статье StackOverflow