14

TextView の背景色を取得するにはどうすればよいですか?

TextView を押すと、使用中の背景色に合わせて背景色を変更したい。

TextView には次のようなメソッドはありません。

getBackgroundResource()

編集: 背景色の resId を取得したいと思います。

4

5 に答える 5

19

背景のカラーコードを取得したい場合は、これを試してください:

if (textView.getBackground() instanceof ColorDrawable) {
    ColorDrawable cd = (ColorDrawable) textView.getBackground();
    int colorCode = cd.getColor();
}
于 2013-06-20T21:36:39.243 に答える
0

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;
    }
于 2015-05-28T07:18:58.690 に答える