2012-07-13 6 views
17

DarkActionBarから継承するカスタムテーマを使用しています。Light Holoテーマを使用するときのように、ドロップダウンメニューを白くカスタマイズしたいと思います。スタイリングActionBarドロップダウンメニュー

私が使用して白に背景を変更することができました:

<style name="MyTheme" parent="@style/Theme.Light.DarkActionBar"> 
    <item name="android:actionDropDownStyle">@style/MyDropDownNav</item> 
</style> 
<style name="MyDropDownNav"> 
    <item name="android:background">@drawable/spinner_background_white</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_whyite</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_white</item> 
</style> 

をしかし、私は黒にテキストの色を変更する方法のいずれかの手掛かりを持っていません。白いドロアブルを設定した後は、白い背景のためにテキストが見えないという問題があります。

答えて

21

何らかの調査の後、私は自分自身に答えます。それは、テキストの外観の変化するactionBarWidgetThemeのためにカスタマイズandroid:spinnerDropDownItemStyle

  • :のあなたがする必要があるスタイリングを問うことに加え 。
  • また、ドロップダウンリストは、使用するアダプタによって管理されることを忘れないでください。次に、標準のもの(simple_dropdown_item_1line)を使用しても問題はありません。しかし、私のようなカスタムアイコンを使用した場合(アイコンを追加できるように)style="?attr/spinnerDropDownItemStyle"をレイアウトTextViewに適用することを忘れないでください。

その後、最終的なカスタムスタイルは次のとおりです。myapp_DropDownNavでドロワブルは、あなたが私のアドバイスは、単に継承することですAndroid Asset Studio

+5

API 19では機能しません。 –

3

itemTextAppearanceを設定してみてください。それはあなたが望むものを達成するはずです。

0

ActionBar Style generatorを生成することができます白地ものです

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

<style name="Theme.myapp" parent="@style/Theme.Light.DarkActionBar"> 
    <item name="android:actionDropDownStyle">@style/myapp_DropDownNav</item>   
    <item name="android:actionBarWidgetTheme">@style/myapp.actionBarWidgetTheme</item> 
</style> 

<style name="myapp.actionBarWidgetTheme" parent="@style/Theme."> 
    <item name="android:spinnerDropDownItemStyle">@style/myapp.Widget.DropDownItem.Spinner</item> 
</style> 

<style name="myapp_DropDownNav" parent="@style/Widget.Spinner.DropDown.ActionBar"> 
    <item name="background">@drawable/spinner_background_ab_myapp</item> 
    <item name="android:background">@drawable/spinner_background_ab_myapp</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_myapp</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_myapp</item> 
</style> 

<style name="myapp.Widget.DropDownItem.Spinner" parent="Widget.DropDownItem.Spinner"> 
    <item name="android:textAppearance">@style/myapp.TextAppearance.Widget.DropDownItem</item> 
</style> 

<style name="myapp.TextAppearance.Widget.DropDownItem" parent="TextAppearance.Widget.DropDownItem"> 
    <item name="android:textColor">@color/black</item> 
</style> 

Sherlock.Lightのテーマを選択し、該当するフィールドをDark値に変更します。私のアプリでは、白い「上」のアイコンと、アクションラベルの白いテキストが必要でした。私はアクションバーアイコンの暗いバージョンを提供しないので、とにかくすべて白です。だから、数時間後にそれを使いこなし、さまざまな人々の提案に従って、私はABSテーマファイルで探していたものを見つけました。

私はSherlock.Light(まあ、技術的にHoloEverywhereLight.Sherlockけど...)と変化から継承:それだ

<item name="android:actionMenuTextColor">@color/White</item> 
<item name="actionMenuTextColor">@color/White</item> 
<item name="android:homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item> 
<item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item> 
<item name="android:dividerVertical">@drawable/abs__list_divider_holo_dark</item> 
<item name="dividerVertical">@drawable/abs__list_divider_holo_dark</item> 

。クラスを拡張したり、コードでスタイルを変更したりするよりも簡単で簡単です。

2

私はこれを行う最も簡単な方法を見つけました。私はAppCompatライブラリを使って作業していました。

<style name="ApplicationTheme" parent="@style/Theme.AppCompat"> 
    <item name="android:actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> 
    <item name="actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> 
</style> 
+0

Excelent!しかし、私はLight.DarkActionBarテーマでのみ動作すると思います。 – rubenlop