пользовательский стиль - получить цветовой код в коде - работает хорошо, пока цвет не #ffffffff - PullRequest
3 голосов
/ 20 марта 2012

Я определил цветовой атрибут, установил его в стиле, и я использую приведенный ниже код для использования значения.Все работает нормально, пока цвет отличается от #ffffffff (значит, согласно коду, приведенному ниже, для любого цвета, определенного в стиле, переменная цвета получает правильное значение, но для белого значение цвета равно -1).Кажется, что с моим кодом значение цвета должно быть меньше, чем #ffffffff, и я не понимаю, почему.

это определение attr:
<attr name="viewLvActive" format="color"/>

этострока в пользовательском стиле:
<item name="@attr/viewLvActive">#ffffffff</item>

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

Resources.Theme theme = mCtx.getTheme();
TypedValue styleID = new TypedValue();
if (theme.resolveAttribute(R.attr.viewLvActive, styleID, true))
    color=styleID.data;
else
    color=-1;

Наконец, я могу жить сЦвет #fffffffe, но все же я хотел бы знать, где ошибка.

1 Ответ

0 голосов
/ 13 августа 2014

Какой тип переменной color?Потому что если это int, то -1 == #ffffffff.Если вы проверяете что-то вроде:

if (color == -1) {

, вы получите true для #ffffffff.int - 32 бита, и цвет ARGB заполнит все это.Вы не можете использовать такое значение, как -1 (или любое другое значение), чтобы означать «нет цвета».

...