web-dev-qa-db-ja.com

resフォルダーのstyles.xmlにアプリの名前空間が見つかりません

Android.support.v7.widget.Toolbarウィジェットを使用して独自のツールバーを作成しており、resフォルダー内のstyles.xmlに可能な限り配置します。

/res/layout/$example.xmlのファイルの一部

<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:id="@+id/toolbar_show_addresses_simple"
    app:style="@style/toolbar_dark" >

私の「toolbar_dark」は/res/values/styles.xmlで次のように定義されています

<style name="toolbar_dark">
    <item name="Android:layout_width">match_parent</item>
    <item name="Android:layout_height">wrap_content</item>
    <item name="Android:background">@color/myPrimary</item>
    <item name="app:theme">@style/ThemeOverlay.AppCompat.Dark</item>
    <item name="app:popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="app:contentInsetStart">0dp</item>
</style>

コンパイルするとき

  Output:
     Error: No resource found that matches the given name: attr 'app:contentInsetStart'.
     Error: No resource found that matches the given name: attr 'app:popupTheme'.
     Error: No resource found that matches the given name: attr 'app:theme'.

$ example.xmlでapp:*値を直接使用すると、すべてが正常に機能します。したがって、resフォルダー内のファイルでアプリの名前空間を使用するにはどうすればよいですか?

34
Felix Fiskare

スタイルファイルでアプリ名前空間を使用することはできません。また、レイアウトでアプリ名前空間を使用してstyle属性を参照する必要があります。

次のようなことができます:

<Android.support.v7.widget.Toolbar    
       xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:tools="http://schemas.Android.com/tools"
        Android:id="@+id/toolbar_show_addresses_simple"
        style="@style/toolbar_dark" >

スタイル:

<style name="toolbar_dark" parent="Widget.AppCompat.Toolbar">
    <item name="Android:background">@color/green</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark</item>
</style>
65