アプリを準備中ですAndroid 5.0、最新の互換性ライブラリを使用しています。これが私のスタイルです。
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/theme_accent</item>
<item name="colorAccent">@color/theme_accent_secondary</item>
</style>
<style name="AppThemeDark" parent="Theme.AppCompat">
<item name="colorPrimary">@color/theme_accent</item>
<item name="colorAccent">@color/theme_accent_secondary</item>
</style>
</resources>
(ActionBarの色はプログラムで設定されています。)
今、私はオーバーフロー/ポップアップメニューにホロ実装の場合のように暗い背景を持たせたいのですが、機能させることができません。これは次のようになります。
popupMenuStyle
を設定しようとしましたが、うまくいきませんでした。
ポップアップメニューを暗くするにはどうすればよいですか?
このスタイルを使用して私の問題を解決しました:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/theme_accent</item>
<item name="colorAccent">@color/theme_accent_secondary</item>
<item name="actionBarStyle">@style/AbStyle</item>
<item name="actionModeBackground">@color/actionmode_bg</item>
</style>
<style name="AbStyle" parent="Widget.AppCompat.Toolbar">
<item name="elevation">2dp</item>
<item name="displayOptions">homeAsUp|showTitle</item>
<!--showHome-->
</style>
<style name="AppThemeDark" parent="Theme.AppCompat">
<item name="colorAccent">@color/theme_accent_secondary</item>
<item name="actionBarStyle">@style/AbStyle</item>
</style>
親のactionBarStyleとしてWidget.AppCompat.Toolbarを使用する必要がありました
ActionBar
の使用を停止します。 ToolBar
をActionBar
のように設定したい場合は、Android開発者ブログの このガイド に従ってください。
Dark Action Barで実際にユースケースについて言及し、次のコードを提供します。
<Android.support.v7.widget.Toolbar
Android:layout_height=”wrap_content”
Android:layout_width=”match_parent”
Android:minHeight=”@dimen/triple_height_toolbar”
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
完全な答えではなく、私がこれまでに見つけたもの:
過去のバージョンでは、ドローアブルを指定する必要がありました(チェック https://github.com/StylingAndroid/StylingActionBar コードとチュートリアル)
どうやら、今それは色です。これを変更するには、次のテーマを指定する必要があります。
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
<style name="AppTheme" parent="Android:Theme.Material.Light.DarkActionBar">
<item name="Android:actionBarPopupTheme">@style/popupNew</item>
</style>
<style name="popupNew" parent="Android:ThemeOverlay.Material.Light">
<item name="Android:colorBackground">@color/red</item>
</style>
</resources>
アプリに適用されるテーマがこれだけの場合、これは正しく機能します。既存のテーマにAndroid:actionBarPopupTheme
を追加しても機能しません。私はその理由を理解しようとしています。
プロパティpopupThemeをツールバーに追加します。
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/color_primary"
app:theme="@style/Theme.AppCompat.Light"
app:popupTheme="@style/Theme.AppCompat" />
または、ツールバーの新しいスタイルを定義します。
<style name="MyToolBarStyle" parent="Widget.AppCompat.Toolbar">
<item name="Android:background">@color/green</item>
<item name="popupTheme">@style/Theme.AppCompat.Light</item>
<item name="theme">@style/Theme.AppCompat</item>
</style>
この質問はXMLによるスタイル設定ですでに回答されていますが、この質問と同様のスタイル設定の質問の解決策を自分で解決する方法の説明をここに追加します。
まず、これはAppCompatを使用する場合のソリューションです。アプリのstyle.xmlに、actionBarPopupThemeをテーマに追加します。
<style name="Theme.MyTheme" parent="@style/Base.Theme.AppCompat.Light.DarkActionBar">
...other stuff here
<item name="actionBarPopupTheme">@style/Theme.MyTheme.ActionBarPopupTheme</item>
</style>
<style name="Theme.MyTheme.ActionBarPopupTheme" parent="@style/ThemeOverlay.AppCompat.Light">
<item name="Android:textColor">@Android:color/white</item>
<item name="Android:background">@Android:color/black</item>
</style>
この解決策にたどり着くまでに行った手順は次のとおりです(Androidのドキュメントが貧弱であるため、多少の探偵の作業が必要です):
このスタイルの中で私はこの行を見ました:
<item name = "actionBarPopupTheme"> @ style/ThemeOverlay.AppCompat.Light </ item>
これは、ポップアップのテーマを変更できる場所のように見えました。貧弱なAndroid開発者向けドキュメントで「actionBarPopupTheme」を検索し、「アクションバーのウィジェットによって表示されるポップアップをインフレートするために使用する必要があるテーマへの参照」を見つけました。 。
「actionBarPopupTheme」を含むappcompat行をstyle.xmlにコピーし、この行でアイテムのテーマ参照(上の太字のビット)をTheme.MyTheme.ActionBarPopupThemeに置き換えました。