Подтвердить что ты не робот

Есть ли способ вызова "getBackgroundColor"?

Есть ли такой метод для вызова метода getBackgroundColor в TextView? если у меня есть 2 textViews: tv1 и tv2 в одном LinearLayout. Что я сделал: tv1.setBackgroundColor(Color.BLUE)

Теперь, если я хочу, чтобы setBackgroundColor tv2 был таким же, как tv1, как я могу получить backgroundColor в tv1, а затем setBackgroundColor tv2?

4b9b3361

Ответ 2

Лучшее решение, чем бурбоны:

((ColorDrawable)view.getBackground()).getColor();

Преимущество состоит в том, что мы получаем целое число, сопоставимое с перечислениями цвета, заданными классом Color.

Ответ 3

Установка цвета фона устанавливает Drawable с указанным цветом в качестве фона, то есть следующий пример будет работать очень хорошо:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.some_layout_name);
    TextView t1 = (TextView) findViewById(R.id.text1);
    TextView t2 = (TextView) findViewById(R.id.text2);

    t1.setBackgroundColor(Color.GREEN);
    t2.setBackgroundDrawable(t1.getBackground());
}

Ответ 4

Нет такого метода, потому что в общем есть "цвет фона" - может быть любой объект Drawable (например, изображение). Итак, вы должны помнить, какой цвет вы задали для текста.

Если вы не можете сохранить его, используйте методы View.setTag() и View.getTag() для хранения любого значения, связанного с представлением.

Ответ 5

Вот еще один вариант:

Как я решил эту проблему для моего приложения, я должен был определить цвета в values ​​/color.xml.

<resources>

    <color name="blue">#ff0099cc</color>
    <color name="dark_grey">#ff1d1d1d</color>
    <color name="white">#ffffffff</color>
    ...

    <color name="textview_background">@color/white</color>

</resources>

В макете TextView есть:

android:background="@color/textview_background"

Если я хочу получить цвет фона в коде, я могу просто использовать:

getResources().getColor(R.color.textview_background)

Это дает мне объект Color напрямую, не беспокоясь о том, как получить цвет от Drawable.

Ответ 6

Это работает для меня.

public static int getColor(View v) {
    if(Build.VERSION.SDK_INT>=11)
    {
        return ((ColorDrawable)v.getBackground()).getColor();
    }
    else
    {
       try
       {
        Field f=View.class.getDeclaredField("mState");
        f.setAccessible(true);
        Object mState=f.get(v);
        Field f2=mState.getClass().getDeclaredField("mUseColor");
        f2.setAccessible(true);
        return (int) f2.get(mState);
       }
       catch (Exception e)
       {

       }
    }
    return 0;
}