21

私が開発しているアプリケーションは ActionBarSherlock を使用しており、メイン テーマは Theme.Sherlock.Light.DarkActionBar を継承しています。このデザインでは、オーバーフロー メニュー ポップアップの背景色を濃くし、テキストを白にする必要があります。これは、物理的なメニュー ボタンのないデバイスでは問題なく機能し、テキストは意図したとおりに白く表示されます。ただし、デバイスに物理的なメニュー ボタンがある場合、表示されるメニューに表示されるテキストは黒のままです。

私のメインテーマは

<item name="android:panelBackground">@drawable/menu_hardkey_panel</item>

... @drawable/menu_hardkey_panel は濃い色の 9patch です。

結果として得られるメニュー ポップアップの外観は...Light.DarkActionbar の問題

なぜこれが起こっているのか、またはテキストの色を手動で変更する方法を特定できません。私のメインテーマでは、次のすべてを試しました...

<item name="android:actionMenuTextColor">@android:color/white</item>
<item name="android:textAppearanceLargePopupMenu">@style/MyMenuTextAppearance.Large</item>
<item name="android:textAppearanceSmallPopupMenu">@style/MyMenuTextAppearance.Small</item>

私も試してみました

<item name="android:actionBarWidgetTheme">@style/Theme.MyApp.Dark</item>

...Theme.MyApp.Dark の場所...

<style name="Theme.MyApp.Dark" parent="@style/Theme.Sherlock">
    <item name="android:dropDownListViewStyle">@style/DropDownListView</item>
    <item name="dropDownListViewStyle">@style/DropDownListView</item>
</style>

テキストを白に変更できるものはありません。基本テーマを Theme.Sherlock から継承するようにすると、問題は解決し、テキストは白くなりますが、残念ながらそれはオプションではありません。

4

6 に答える 6

2

これについてはよくわかりませんが、ポップアップ メニューはオーバーフロー メニューと同じスタイルを使用していると思います。その場合、このようなことをするだけです。

<item name="android:itemTextAppearance">@style/your_new_text_appearance</item>

<style name="your_new_text_appearance">
    <item name="android:textColor">@android:color/white</item>
</style>
于 2012-11-19T17:04:57.820 に答える
1

私の調査では、テキストの色を変更する方法は見つかりませんでしたが、少なくともハードキー メニューを適切に処理することはできます。

このリンクは、問題に対するまずまずの解決策を提供してくれました: https://github.com/jgilfelt/android-actionbarstylegenerator/issues/30

生成されたテーマから「android:panelBackground」項目をコメントアウトすると、テーマと完全に一致しなくても、少なくともハードキー メニューにテキストが表示されるようになりました。

また、「 menu_hardkey_panel_whatever.9.png」ドローアブルを、テーマと黒いテキストで機能するものに置き換えてみることもできます。

于 2013-04-17T20:34:42.357 に答える
1

チャンスを与える: と呼ばれるテキストの外観がありますactionMenuTextAppearance。あなたはそれを試しましたか?

更新:さらに掘り下げましたが、このファイルはレイアウトであると信じていtextAppearanceListItemSmallますtextAppearanceSmall。ただし、この値は、次のように指定されている特別なテーマから取得しますTheme.Holo.Light

<item name="panelMenuListTheme">@android:style/Theme.Holo.Light.CompactMenu</item>

そして、次のようにTheme.Holo

<item name="panelMenuListTheme">@android:style/Theme.Holo.CompactMenu</item>

Sherlock.__Theme.DarkActionBar問題は、 の親が であるという事実から生じますTheme.Sherlock.Light。これは、ダーク アクション バーには無効です。から行を取得すると、Theme.Holoうまくいくはずです。

于 2012-11-20T13:24:03.123 に答える
0

私にとってこれは問題を解決します、代わりにこれを試してください:

<style name="MyTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    ...
    <item name="actionBarWidgetTheme">@null</item>
    <item name="android:actionBarWidgetTheme">@null</item>
    ...
</style>
于 2013-03-05T08:32:55.347 に答える
0

私は解決策を見つけました、使用:

getSupportActionBarContext()

例えば

ArrayAdapter<CharSequence> list =
            ArrayAdapter.createFromResource(getSupportActionBarContext(), R.array.navigation, layout.simple_spinner_item);
    list.setDropDownViewResource(layout.simple_spinner_dropdown_item);

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    getSupportActionBar().setListNavigationCallbacks(list, this);
于 2013-04-02T11:54:12.103 に答える
-1

Theme.Sherlock.Light.DarkActionBar がコンテンツのスタイルを正しく設定していないという事実は、actionWidgetTheme 属性が ContextThemeWrapper と共に使用されてアクション バー ビューを膨張させるためだと思います (Jake Wharton 自身の言葉)。 Theme.Sherlock を親として使用しないという必要性を 1 つの方法で壊しますが、次の (テストされていません) 必要があります。

<style name="MyColorTheme" parent="Theme.Sherlock">
    <item name="android:actionMenuTextColor">@android:color/white</item>
    <item name="actionMenuTextColor">@android:color/white</item>
</style>

<style name="YourMainTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="android:actionMenuTextAppearance">@style/MyColorTheme</item>
    <item name="actionMenuTextAppearance">@style/MyColorTheme</item>
</style>

動作する場合と動作しない場合があります。それが問題です :)

于 2012-11-20T23:02:44.767 に答える