TextView の背景色を取得するにはどうすればよいですか?
TextView を押すと、使用中の背景色に合わせて背景色を変更したい。
TextView には次のようなメソッドはありません。
getBackgroundResource()
編集: 背景色の resId を取得したいと思います。
背景のカラーコードを取得したい場合は、これを試してください:
if (textView.getBackground() instanceof ColorDrawable) {
ColorDrawable cd = (ColorDrawable) textView.getBackground();
int colorCode = cd.getColor();
}
ColorDrawable.getColor()
は 11 を超える API レベルでのみ機能するため、このコードを使用して最初からサポートできます。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;
}