如何在android中的drawable.xml中为不同的样式设置不同的solid属性颜色?

时间:2017-07-09 13:59:51

标签: android styles drawable

我有问题而且我经常搜索并浪费大量时间,

我的问题是我有2种风格,每种活动都有一种风格,它的孩子当然不同(colorPrimary和colorPrimaryDark),这是2种风格:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="adapter_button_color">@color/secondary_orange</item>
</style>

 <style name="AppTheme.SurveyStyle" parent="AppTheme">
    <item name="colorPrimary">@color/colorPrimary2</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark2</item>
    <item name="colorAccent">@color/colorAccent2</item>

    <item name="adapter_button_color">@color/button_click</item>
</style>

,我有使用抽象名称raise_selector作为按钮的背景

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true" android:drawable="@drawable/raised_pressed"/><!-- pressed -->
   <item android:drawable="@drawable/raised_normal" /> <!-- default -->

和raise_normal的代码例如:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorPrimary" />

<stroke
    android:width="3dp"
    android:color="@color/colorPrimary" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" />

<corners
    android:bottomLeftRadius="3dp"
    android:bottomRightRadius="3dp"
    android:topLeftRadius="3dp"
    android:topRightRadius="3dp" />

当我设置<solid android:color="@color/colorPrimary" />时,不同风格的按钮颜色会相同,所以我搜索并查找是否写入 而<solid android:color="?attr/colorPrimary" />将获得该风格的主色。

现在好了!!所以使用(?attr / colorPrimary)的每个思考工作都可以正常工作但是这在v-21及以上版本和最小sdks如果我设置(?attr / colorPrimary)而不是&#34; @ color / colorPrimary&#34;应用程序将崩溃。

那么我能以这种方式做什么并设置颜色取决于风格? 感谢您的时间和感谢您的阅读

1 个答案:

答案 0 :(得分:0)

这意味着旧款手机无法解决此问题:(