Невозможно изменить цвет фона представления, если цвет определен в XML - PullRequest
0 голосов
/ 19 ноября 2018

Мне попалась странная проблема. У меня есть RelativeLayout, я определяю цвет фона в XML следующим образом:

 <RelativeLayout ..
      android:background="#449966">
 </RelativeLayout>

Теперь я хочу программно обновить цвет фона, поэтому я сделал это:

 view.setBackgroundColor( Color.argb( 255, 200, 150, 133 ) );

Что странно работает, ТОЛЬКО если я удаляю атрибут background из файла XML. Если присутствует атрибут background , цвет фона не изменяется при программной установке.

Так как атрибут background , кажется, ожидает Drawable , я подумал, может быть, мне нужно создать также drawable и использовать вместо него метод setBackground , поэтому я сделал:

 Drawable newColor = new ColorDrawable( Color.argb( 255, 200, 150, 133 ) );
 view.setBackground( newColor );

Но, тем не менее, цвет фона не изменяется, ЕСЛИ атрибут background присутствует в XML. Кажется, что если в XML определен атрибут background , он не может быть перезаписан 1027 *.

Есть предложения, пожалуйста? Спасибо!

1 Ответ

0 голосов
/ 19 ноября 2018

это потому, что каждое представление ведет себя не так, как другие, и когда вы пытаетесь изменить цвет общего вида, который является видом «макета», он никогда не будет работать, поэтому вы должны вызвать «RelativeLayout» по id и затем изменить его представление:

 <RelativeLayout
  android:id="@+id/myview"
  android:background="#449966">
 </RelativeLayout>

в Java:

 view.findViewById(R.id.myview).setBackgroundColor(Color.argb( 255, 200, 150, 133 ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...