3

私は運が悪いので、しばらくの間これに頭を悩ませてきました。アプリ (Android API 11 以降をサポート) でを使用してandroid.support.v7.widget.Toolbarおり、スタイルを設定したいと考えています。これが私が試している方法です:

マイ アクティビティ レイアウト XML には次が含まれます。

        <android.support.v7.widget.Toolbar
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:theme="?attr/foo" />

res/values/attr.xmlには以下が含まれます (ここで属性を定義します):

        <attr name="foo" format="reference" />

res/values/Themes.xml :

    <style name="AppTheme" parent="Theme_one">
    </style>
    <style name="Theme_one" parent="@style/Theme.AppCompat.Light">
        <item name="windowActionBar">false</item> 
        <item name="foo">@style/foo_style</item>
        <!-- bunch of other styles -->
    </style>

res/values/Styles.xml :

<style name="foo_style" parent="@style/Theme.AppCompat.Light">
    <item name="android:background">@color/actionBarDark</item>
</style>

res/values-v21/Themes.xml :

<style name="AppTheme" parent="Theme_one">
    <!-- some v21 specific items not related to toolbar like animations etc-->
</style>

res/values-v21/Styles.xml :

<style name="foo_style" parent="@style/Theme.AppCompat.Light">
    <item name="android:colorPrimaryDark">@color/actionBarDark</item> <!-- THIS DOES NOT WORK !!! -->
    <item name="android:background">@color/actionBarDark</item>
    <item name="android:elevation">5dp</item>
</style>

この配置は、Android API v11 から v19 で正常に機能します。v21の私の問題(android:接頭辞なしで2と3も試しましたが、同じ結果が得られました):

1) android:backgroundは正常に 動作します!
2) android:colorPrimaryDarkが機能しない!
3) android:elevationToolbarは、以下のように とToolbarボタンのタイトルに適用されます。これは期待されていますか?
ここに画像の説明を入力

私は何が欠けていますか?明らかに、私は正しい方法でスタイリングを行っていませんが、スタイリングについて説明しているリソースを見つけることができませんtoolbar!

4

1 に答える 1

1

以下を移動することで、colorPrimaryDarkが機能するようになりました。

<item name="colorPrimaryDark">@color/actionBarDark</item>

res/values-v21/Styles.xmlからres/values-v21/Themes.xmlへ。

すべてのスタイルまたはテーマ xml から昇格を削除し、宣言に入れることで昇格を機能させましたandroid.support.v7.widget.Toolbar

また、ここで別のテーマを定義し、Content.setTheme() を使用してアプリで動的に変更すると、テーマは変更されますが、ステータス バーの色は変更されません。どんな提案でも大歓迎です。

于 2014-11-09T04:05:05.937 に答える