Тема, стили и вложенность псевдонимов не работают - PullRequest
1 голос
/ 16 июня 2011

Я пытаюсь проверить способ создания тем, но используемый мной подход не дает ожидаемых результатов. Вот мои настройки:

вытяжка / dummy.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/icon" />

Значения / mythemes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyOrange" parent="android:style/Theme">
        <item name="@drawable/dummy">@style/imgOrange</item>
    </style>
    <style name="MyBlue" parent="android:style/Theme">
        <item name="@drawable/dummy">@style/imgBlue</item>
    </style>

    <style name="imgOrange">
        <item name="android:src">@drawable/orange</item>
    </style>
    <style name="imgBlue">
        <item name="android:src">@drawable/blue</item>
    </style>
</resources>

layuot / main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:orientation="vertical">
    <ImageView android:id="@+id/imageView1"
        android:src="@drawable/dummy"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
        </ImageView>
</LinearLayout>

Я не получаю никакой ошибки, но это также не меняет тему.

Я также пытался использовать стиль в качестве «пустышки», но он делает то же самое.

Любая идея / объяснение?

1 Ответ

0 голосов
/ 21 декабря 2018

Я не претендую на правильность решения, но оно работает.Я решил проблему с помощью этого трюка:

Мои атрибуты:

<attr name="arrow_up_active" format="reference" />
<attr name="arrow_down_active" format="reference" />

Мои темы:

<style name="AppThemeLight" parent="Theme.AppCompat.Light.NoActionBar">
    ....
    <item name="arrow_down_block">@drawable/up_active</item>
    <item name="arrow_down_active">@drawable/down_active</item>
</style>
<style name="AppThemeDark" parent="Theme.AppCompat.NoActionBar">
    ....
    <item name="arrow_down_block">@drawable/up_active</item>
    <item name="arrow_down_active">@drawable/down_active</item>
</style>

Мои переменные:

private TypedArray arrowUpActive, arrowDownActive;

Декларация:

arrowUpActive = getActivity().getTheme().obtainStyledAttributes(new int[] { R.attr.arrow_up_active });
arrowDownActive = getActivity().getTheme().obtainStyledAttributes(new int[] { R.attr.arrow_down_active });

И использование:

imageButton.setImageDrawable(getResources().getDrawable(arrowUpActive.getResourceId(0,1)));
imageButton.setImageDrawable(getResources().getDrawable(arrowDownActive.getResourceId(0,1)));
...