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

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

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

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

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

Спасибо.

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

v.setBackgroundColor(0x00FF00);

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

v.setBackgroundColor(0xFF00FF00);

Установить цвет фона зеленым цветом. GREEN constant:

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));

Ответ 4

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

View.setBackgroundColor(Color.parseColor("#e7eecc"));

Ответ 5

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

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

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

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

Ответ 6

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

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

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

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

Ответ 7

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

android:background="#FF00FF00"

Ответ 8

попытайтесь добавить:

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

Ответ 9

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

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

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));

Ответ 10

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

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

Ответ 11

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

Ответ 12

mButton.setBackgroundColor(getResources().getColor(R.color.myColor));

Ответ 13

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

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

Ответ 14

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

view.setBackgroundColor(Color.rgb(0, 198, 255));

Ответ 15

view.setBackgroundColor(R.color.primaryColor);

Добавляет цвет к предыдущему значению цвета, поэтому у меня другой цвет.

Что работает для меня:

view.setBackgroundResource(R.color.primaryColor);

Ответ 16

Предположим, у нас есть основной цвет в values=>colors.xml как:

<resources>
    <color name="primary">#FDD835</color>
</resources>

поэтому, если мы хотим использовать наш собственный цвет в setBackgroundColor(@ColorInt int Color), нам просто нужна аннотация @SuppressLint("ResourceAsColor") с конструктором/методом, который будет использоваться как:

    @SuppressLint("ResourceAsColor")
    public _LinearLayout(Context context) {
        super(context);

        // Formatting our layout : )
        super.setBackgroundColor(R.color.primary);

        ....


    }

Ответ 17

Вы должны передать int в аргументе.

Первый пример:

view.setBackgroundColor(-500136)

Второй пример:

int colorId = R.color.green;

view.setBackgroundResource(colorId);

Ответ 18

Это должно работать нормально: v.setBackgroundColor(0xFF00FF00);