【问题标题】:Theme, Styles and Alias nesting not working主题、样式和别名嵌套不起作用
【发布时间】:2011-09-16 13:50:08
【问题描述】:

我正在尝试测试一种制作主题的方法,但我使用的方法并没有给我预期的结果。这是我的设置:

drawable/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>

我没有收到任何错误,但它也没有改变主题。

我也尝试使用一种样式作为“虚拟”,但它做同样的事情。

有什么想法/解释吗?

【问题讨论】:

    标签: android coding-style themes nested


    【解决方案1】:

    我不会假装这个决定是正确的,但它确实有效。 我通过这个技巧解决了这个问题:

    我的属性:

    <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)));
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多