Как установить цвет фона представления - PullRequest
166 голосов
/ 01 февраля 2010

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

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

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

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

Спасибо.

Ответы [ 16 ]

271 голосов
/ 02 сентября 2011

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

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

140 голосов
/ 12 января 2011

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

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

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

115 голосов
/ 17 декабря 2013

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

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

v.setBackgroundColor(0x00FF00);

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

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));
35 голосов
/ 20 декабря 2013

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

View.setBackgroundColor(Color.parseColor("#e7eecc"));
16 голосов
/ 06 января 2011
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

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

Пояснение: неправильное шестнадцатеричное значение цвета. При альфа-значении, равном нулю, цвет будет невидимым.

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

12 голосов
/ 01 февраля 2010

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

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

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

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

11 голосов
/ 28 сентября 2015

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

setBackgroundColor(Color.parseColor("#FF0000"));
11 голосов
/ 22 января 2015

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

android:background="#FF00FF00"
6 голосов
/ 30 марта 2016

Использую при API мин 16, цель 23

Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button);

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
5 голосов
/ 23 августа 2015

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

view.setBackgroundColor(Color.parseColor("#FFFFFF"));
...