1. ホーム
  2. android

[解決済み] appcompat-v7 のツールバーを Theme.AppCompat.Light.DarkActionBar のようにスタイルするには?

2022-12-24 06:10:35

質問

の外観を再現しようとしています。 Theme.AppCompat.Light.DarkActionBar の外観を、新しいサポート ライブラリ Toolbar で再現しようとしています。

もし私が Theme.AppCompat.Light を選ぶとツールバーが明るくなります。 Theme.AppCompat を選ぶと暗くなります。(厳密には .NoActionBar バージョンを使用しなければなりませんが、私の知る限りでは、違いは

<style name="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>

これで Theme.AppCompat.Light.DarkActionBar がないのですが、素朴に自分で作ればいいやと思っていました。

<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>

しかし、これでは私のツールバーはまだ Light のテーマのままです。暗い (ベース) テーマと明るいテーマを混ぜるさまざまな組み合わせを何時間も試しましたが、ツールバー以外のすべての背景を明るくする組み合わせは見つかりませんでした。

を取得する方法はありますか? AppCompat.Light.DarkActionBar をインポートして android.support.v7.widget.Toolbar 's?

どのように解決するには?

のツールバーのスタイルを設定する推奨される方法は、以下のとおりです。 Light.DarkActionBar クローンの場合 Theme.AppCompat.Light.DarkActionbar を親/アプリのテーマとして使用し、以下の属性をスタイルに追加してデフォルトの ActionBar を非表示にします。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

次に、以下をToolbarとして使用します。

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.AppBarLayout>

さらに変更する場合は ThemeOverlay.AppCompat.Dark.ActionBarThemeOverlay.AppCompat.Light の中のものを置き換えて AppBarLayout->android:themeToolbar->app:popupTheme . また、これはあなたの ?attr/colorPrimary を拾うので、背景色が異なる場合があることに注意してください。

この良い例は、現在のプロジェクト・テンプレートにある Empty Activity の Android Studio (1.4+) のものです。