2013-07-19 2 views
0

У меня есть ListView, и я хочу изменить текущий активный ряд, чтобы быть другого цвета.Android ListView изменение цвета фона

В настоящее время у меня есть это:

rowView.setBackgroundColor(0xFF0000FF); // make blue bg 

И это работает, как ожидалось.

Однако есть одна «философская» проблема - поскольку я использую все цветовые схемы по умолчанию, какой цвет я должен использовать? Синий - плохой пример, потому что схема Android может быть темной или легкой или полностью настраиваемой.

То, что я имею в виду, может быть обратным цветом, видимым подобным цветом (например, на 20% темнее) или, возможно, одного цвета, но с некоторым эффектом.

должны работать на Android 2.2+

Отредактировано:

Решение Я ищу это еще что-то вроде этого:

int x = this.getResources().getColor(android.R.color.holo_blue_bright); 
listViewItem.setBackgroundColor(x); 

ответ

0

Если вы хотите, функция для вычисления цвета темнее или ярче см Brighter/Darker function. Является ли в JavaScript, но легко перевести на Java

+0

спасибо, это полезно – Nick

+0

Рад помочь, но если вы считаете, что это было полезно, лучший способ поблагодарить - это возвысить и принять – ramaral

1

Если вы знаете, что это цвет, то вы можете попробовать

ColorDrawable buttonColor = (ColorDrawable) button.getBackground(); 

И если вы на Android 3.0+ вы можете выйти из идентификатор ресурса цвет.

int colorId = buttonColor.getColor(); 

Затем сделайте следующее:

int red = Color.red(colorId); 
    int blue = Color.blue(colorId); 
    int green = Color.green(colorId); 
    double percent = 400; 
    button.setBackgroundColor(Color.rgb((int)(red * percent/100), 
     (int)(blue * percent/100),(int)(green * percent/100))); 

Примечание делая цвет более осветляет цвет, и меньшее число темнеет цвет.

+0

Дело в том, что 10% легче/темнее - это взломать. Лучше использовать сплошной цвет, но я не знаю цветов и не знаю, какой цвет я должен использовать? Если я использую синий цвет, это будет неправильно, если весь ListView синий. – Nick

Смежные вопросы