web-dev-qa-db-ja.com

Android Theme.AppCompatでメニューの背景が黒?

アプリケーションで何らかの理由で「Theme.AppCompat」をスタイルとして使用すると、次に示すように、メニューが暗い灰色の背景に黒いテキスト(黒いテキストが必要なために設定)になります。

screenshot

いくつかのオンラインリソースを使用してメニューの背景色を手動で設定しようとしましたが、どれも機能していないようです。何が問題を引き起こしているのか誰か知っていますか?以下は私のstyle.xmlです。ご覧のとおり、メインアプリのテーマエントリの下部にある2つの要素は、オンラインで見つけたものを使用して背景色を変更しようとしています。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
    <item name="windowActionBar">false</item>
    <item name="Android:windowBackground">@color/white_primary</item>
    <item name="Android:textColor">@color/text_primary</item>
    <item name="Android:textSize">@dimen/text_size_medium</item>
    <item name="colorAccent">@color/black_primary</item>
    <item name="Android:popupMenuStyle">@style/PopupMenuStyle</item>
    <item name="Android:panelFullBackground">@drawable/menu_full_bg</item>
</style>

<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
    <item name="Android:popupBackground">@Android:color/white</item>
</style>

<drawable name="menu_full_bg">#FFFFFF</drawable>
13
rohan32

ポップアップメニューの背景色は以下のように変更できます。

  1. Styles.xmlでスタイルを作成します

    <style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
         <item name="Android:background">@Android:color/white</item>
    </style>
    
  2. このテーマをtoolbar.xmltoolbarポップアップテーマとして設定します

     <Android.support.v7.widget.Toolbar     
        xmlns:app="http://schemas.Android.com/apk/res-auto"    
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
    
            // Your code here
           app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
           app:popupTheme="@style/PopupMenuStyle" />
    

お役に立てれば。

24
Pooja

ツールバーオプションメニューの色を変更するには、これをツールバー要素に追加します

app:popupTheme="@style/MyDarkToolbarStyle"

次に、styles.xmlでポップアップメニュースタイルを定義します

<style name="MyDarkToolbarStyle" parent="ThemeOverlay.AppCompat.Light">
    <item name="Android:colorBackground">@color/mtrl_white_100</item>
    <item name="Android:textColor">@color/mtrl_light_blue_900</item>
</style>

背景ではなくcolorBackgroundを使用する必要があることに注意してください。後者はすべて(メニュー自体と各メニュー項目)に適用され、前者はポップアップメニューにのみ適用されます。

3
nzala

以下に示すように、appNSを使用してpopupThemeを定義できます。

app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
2
Golu

これが役立つかどうかはわかりません。それはもっと簡単な解決策かもしれません。 AppCompat --themes_base.xml内に、以下のセクションがあります。

<!-- Panel attributes -->
            <item name="panelMenuListWidth">@dimen/abc_panel_menu_list_width</item>
            <item name="panelMenuListTheme">@style/Theme.AppCompat.CompactMenu</item>
            <item name="panelBackground">@drawable/abc_menu_hardkey_panel_mtrl_mult</item>
            <item name="Android:panelBackground">@Android:color/transparent</item>
            <item name="listChoiceBackgroundIndicator">@drawable/abc_list_selector_holo_dark</item>

アプリ内でテーマを作成し、色を適用します。

<style name="Theme.Base" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="Android:panelBackground">@Android:color/black</item>
    </style>
0
Apirak Lunla

これを参照してください リンク

ここで受け入れられた答えは私のために働いた。ここでも同じ答えを繰り返しています。ツールバーxmlに以下を追加します

<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
                                   xmlns:app="http://schemas.Android.com/apk/res-auto"
                                   Android:layout_width="fill_parent"
                                   Android:layout_height="wrap_content"
                                   Android:background="@color/toolbarbackground"
                                   Android:elevation="4dp"
                                   app:popupTheme="@style/YOUR_THEME_HERE"
                                   Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    >

Styles.xmlの場合:

 <style name="YOUR_THEME_HERE" parent="ThemeOverlay.AppCompat.Light">
        <item name="Android:colorBackground">#000000</item>
        <item name="Android:textColor">#ffffff</item>
    </style>

上記のスタイルは、黒い背景に白いフォントを与えます。

#EugenPechanecの功績

0
Bhaskara

私はこの行をお勧めしません:

    <item name="Android:background">@Android:color/white</item>

私のデバイスのように、メニューポップアップアニメーションはかなり醜い振る舞いをしました。代わりに、これを使用するだけで十分でした。

<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
</style>
0