"无法将?attr / colorPrimary转换为drawable"

时间:2015-07-20 09:26:48

标签: android material-design

我正在开始一个新项目,所以项目或多或少是空的"。我刚刚添加了MainActivity,带有MainActivtyFragment。我没有向他们添加任何代码。

现在,我编辑styles.xml,看起来像这样:



<resources>
    <!-- Base application theme. -->
    <style name="MyTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
        <item name="android:windowNoTitle">true</item>
        <!--We will be using the toolbar so no need to show ActionBar-->
        <item name="android:windowActionBar">false</item>
        <!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette-->
        <!-- colorPrimary is used for the default action bar background -->
        <item name="android:colorPrimary">#2196F3</item>
        <!-- colorPrimaryDark is used for the status bar -->
        <item name="android:colorPrimaryDark">#1976D2</item>
        <!-- colorAccent is used as the default value for colorControlActivated
             which is used to tint widgets -->
        <item name="android:colorAccent">#FF4081</item>
        <!-- You can also set colorControlNormal, colorControlActivated
             colorControlHighlight and colorSwitchThumbNormal. -->
        <item name="toolbarStyle">@style/Widget.AppCompat.Toolbar</item>
    </style>
</resources>
&#13;
&#13;
&#13;

所以,我可以看到你扩展了Material主题。

然后我创建一个工具栏xml文件(mytoolbar.xml),如下所示:

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/abc_ic_voice_search_api_mtrl_alpha"/>
</android.support.v7.widget.Toolbar>
&#13;
&#13;
&#13;

问题在于:

enter image description here

我无法弄清楚原因。我已经完成了gradle sync,clean,rebuild,restarted IDE(Android Studio 1.2.1.1),没有任何作用。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

android [pre-lollipop]操作系统中有一个错误,它不允许你在drawable中使用attr。这是bug的链接:

https://code.google.com/p/android/issues/detail?id=26251

Android开发团队发布了一个修复程序,但它适用于Android L及更高版本。 有关此问题的解决方法,请参阅以下解决方案:

How to reference style attributes from a drawable?

答案 1 :(得分:1)

以下Android OS版本-21存在问题。您可以使用

android:background =“?attr / colorPrimary”

而不是

<强> 应用: “ATTR / colorPrimary” 背景=

它会正常工作。

答案 2 :(得分:1)

将android关键字添加到其中。

?attr/colorPrimary"

变为

?android:attr/colorPrimary

在android studio 3.0中正常工作。