Как установить цвет фона в представлении

Я пытаюсь установить фоновый цвет представления (в данном случае кнопки).

Я использую этот код:

// set the background to green v.setBackgroundColor(0x0000FF00 ); v.invalidate(); 

Это приводит к исчезновению кнопки с экрана. Что я делаю неправильно, и каков правильный способ изменить цвет фона на любом представлении?

Благодарю.

Solutions Collecting From Web of "Как установить цвет фона в представлении"

Вы сделали свою кнопку прозрачной. Первый байт – это альфа.

Попробуйте v.setBackgroundColor(0xFF00FF00);

Когда вы вызываете setBackgoundColor, он перезаписывает / удаляет любой существующий фоновый ресурс, включая любые границы, углы, отступы и т. Д. Что вы хотите сделать, это изменить цвет существующего фонового ресурса …

 View v; v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN); 

Экспериментируйте с PorterDuff.Mode. * Для разных эффектов.

Несколько вариантов сделать это …

Установите фон в зеленый цвет:

 v.setBackgroundColor(0x00FF00); 

Установите фон в зеленый цвет с помощью Alpha :

 v.setBackgroundColor(0xFF00FF00); 

Установите фон в зеленый цвет с помощью параметра Color.GREEN:

 v.setBackgroundColor(Color.GREEN); 

Установите цвет фона в зеленый цвет, заданный в Colors.xml

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="myGreen">#00FF00</color> <color name="myGreenWithAlpha">#FF00FF00</color> </resources> 

И используя:

 v.setBackgroundResource(R.color.myGreen); 

а также:

 v.setBackgroundResource(R.color.myGreenWithAlpha); 

Или более длинное наматывание:

 v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen)); 

а также:

 v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha)); 

Вы можете установить шестнадцатеричный цвет для любого ресурса с помощью:

 View.setBackgroundColor(Color.parseColor("#e7eecc")); 
 // set the background to green v.setBackgroundColor(0x0000FF00 ); v.invalidate(); 

Код не устанавливает зеленую кнопку. Вместо этого он делает кнопку полностью невидимой.

Объяснение: шестнадцатеричное значение цвета неверно. Если значение Alpha равно нулю, цвет будет невидимым.

Правильное значение шестнадцатеричного значения – 0xFF00FF00 для полной прозрачности. Любое значение Alpha между 00 и FF приведет к прозрачности.

И каков правильный способ изменить цвет фона на любом представлении?

В любом View ? То, что у вас есть, является правильным, хотя вы должны отказаться от вызова invalidate() .

Однако некоторые Views уже имеют фоны. У Button , например, уже есть фон: лицо самой кнопки. Этот фон является StateListDrawable , который вы можете найти в android-2.1/data/res/drawable/btn_default.xml в вашей установке Android SDK. Это, в свою очередь, относится к набору растровых изображений с девятью патчами, доступным в нескольких плотностях. Вам нужно будет клонировать и модифицировать все это для достижения ваших зеленых целей.

Короче говоря, вам лучше будет искать другой шаблон пользовательского интерфейса, а не пытаться изменить фон Button .

Чтобы установить первый цвет на экране, вы также можете сделать это в соответствующем layout.xml (лучший дизайн), добавив это свойство в соответствующий View:

 android:background="#FF00FF00" 

Попробуйте добавить:

 setBackgroundColor(Color.parseColor("#FF0000")); 

Я использую API минимум 16, целевой 23

 Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button); WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent)); 

Этот вопрос говорит об изменении цвета фона в представлении. В одном из ответов человек объясняет, как изменить цвет фона во время выполнения. Очевидно, что вы собираетесь посмотреть, как изменить другие объекты на экране, но это должно дать вам хорошее начало, по крайней мере, позволяя вам изменить цвет фона на экране при нажатии кнопки.

Вы можете просто использовать:

 view.setBackgroundColor(Color.parseColor("#FFFFFF")); 
 mButton.setBackgroundColor(getResources().getColor(R.color.myColor)); 

В заявлении с Android 6 используется ContextCompact

  view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));