Как извлечь значения цвета (#rgb) из темы Android?

Я хочу использовать цвета от Темы для применения его к некоторому 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 (), но это имело в основном те же проблемы.

11
задан Mariano Kamp 13 May 2010 в 12:33
поделиться

1 ответ

Я думаю, вам следует переименовать colorResourceId в myColor или что-то в этом роде, потому что это то, что должно быть в вашем коде, насколько я могу сказать.

-16777216 эквивалентен 0xFF000000, который является черным цветом, поэтому, вероятно, ваша тема была черным текстом на белом фоне.

6
ответ дан 3 December 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: