2014-12-08 2 views
2

в одной части моего кода, у меня есть следующий код:Как получить цвет Drawable в Android

linearLayout.setBackgroundColor(Color.RED); 

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

linearLayout.getBackgroundColor(); 

Но нет никакого способа, как это, есть только этот метод:

Drawable drawable = linearLayout.getBackground(); 

Как я могу получить цвет растяжимой? (Я не хочу, чтобы расширить LinearLayout и вручную хранить цвет фона и т.д.)

ответ

7

Попробуйте это:

((ColorDrawable)linearLayout.getBackground()).getColor(); 
0

Try:

((ColorDrawable) linearLayout.getBackground()).getColor(); 

Кстати, я понял это, посмотрев в исходном коде View.java:

public void setBackgroundColor(int color) { 
    if (mBackground instanceof ColorDrawable) { 
     ((ColorDrawable) mBackground.mutate()).setColor(color); 
     computeOpaqueFlags(); 
     mBackgroundResource = 0; 
    } else { 
     setBackground(new ColorDrawable(color)); 
    } 
} 
2

Вы можете использовать ColorDrawable в нечто подобное к этому:

Drawable background = linearLayout.getBackground(); 
if (background instanceof ColorDrawable) { 
     Color color = ((ColorDrawable) background).getColor(); 
} 
1

Попробуйте это:

int color = Color.TRANSPARENT; 
Drawable bg = view.getBackground(); 
if (bg instanceof ColorDrawable){ 
    color = ((ColorDrawable) bg).getColor(); 
} 
Смежные вопросы