17

から継承するカスタム テーマを使用していDarkActionBarます。ライト ホロ テーマを使用するときのように、ドロップダウン メニューを白にカスタマイズしたいと考えています。

以下を使用して背景を白に変更できました。

<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>

しかし、テキストの色を黒に変更する方法の手がかりがありません。白いドローアブルを設定した後、問題は白い背景に白いためテキストが表示されないことです。

4

4 に答える 4

21

いくつかの調査の後、私は自分自身に答えます。質問のスタイリングに加えて、次のことが必要です。

  • テキストの外観を変更するandroid:spinnerDropDownItemStyleためにカスタマイズします。actionBarWidgetTheme
  • また、ドロップダウン リストは使用するアダプターによって管理されることも忘れないでください。標準のもの(simple_dropdown_item_1line)を使用すれば問題ありません。ただし、(アイコンを追加できるようにするために) 私のようなカスタムを使用した場合は、レイアウト TextViewに適用することを忘れないでください。 style="?attr/spinnerDropDownItemStyle"

次に、最終的なカスタム スタイルは次のとおりです。

<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>

ドローアブルは、 Android Asset StudioのActionBar スタイル ジェネレーターmyapp_DropDownNav生成できる白い背景のドローアブルです。

于 2012-07-14T10:51:40.233 に答える
3

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

于 2012-07-13T22:59:31.650 に答える
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>
于 2014-05-08T05:17:15.403 に答える
0

私のアドバイスは、単に 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>

それでおしまい。クラスを拡張したり、コード内のスタイルを変更したりするよりも、はるかに単純で簡単です。

于 2012-10-02T22:02:15.177 に答える