Я хочу использовать цвета от Темы для применения его к некоторому HTML, который представляет мое приложение. Я задаюсь вопросом, могу ли я сделать это?
Я надеюсь использовать цвета как, они указаны в themes.xml:
<item name="colorBackground">@android:color/background_dark</item>
<item name="textColorPrimary">@android:color/primary_text_dark</item>
Так рассмотрение их они объявляются таким же образом. Таким образом, я думал, что мог получить доступ к ним таким же образом также.
Это не причина все же. При попытке получить доступ к тем значениям этот путь:
TypedValue tv = new TypedValue();
getTheme().resolveAttribute(android.R.attr.colorBackground, tv, true);
System.out.println("tv.string=" + tv.string);
System.out.println("tv.coerced=" + tv.coerceToString());
int colorResourceId = getResources().getColor(tv.resourceId);
System.out.println("colorResourceId=" + colorResourceId);
tv = new TypedValue();
getTheme().resolveAttribute(android.R.attr.textColorPrimary, tv, true);
System.out.println("tv.string=" + tv.string);
System.out.println("tv.coerced=" + tv.coerceToString());
colorResourceId = getResources().getColor(tv.resourceId);
System.out.println("colorResourceId=" + colorResourceId);
Я получаю это в результате:
I/System.out( 1578): tv.string=null
I/System.out( 1578): tv.coerced=#ffffffff
I/System.out( 1578): colorResourceId=-1
I/System.out( 1578): tv.string=res/color/primary_text_light.xml
I/System.out( 1578): tv.coerced=res/color/primary_text_light.xml
I/System.out( 1578): colorResourceId=-16777216
Результаты отличаются. Первый на самом деле дает мне цвет "#fffffff", который работал бы на меня, второй только дает мне xml.
Я должен перейти еще через несколько обручей здесь для разрешения фактического цвета? Мое исходное намерение работает вообще? Возможно, это не будет работать, потому что цвета могли быть произвольным drawables?
Я не нашел соответствующей документации, но если Вы знаете кого-либо, просто указываете на меня, там нравятся.
Btw. Я также попробовал obtainStyledAttributes (), но это имело в основном те же проблемы.
Я думаю, вам следует переименовать colorResourceId
в myColor
или что-то в этом роде, потому что это то, что должно быть в вашем коде, насколько я могу сказать.
-16777216 эквивалентен 0xFF000000, который является черным цветом, поэтому, вероятно, ваша тема была черным текстом на белом фоне.