1

現在、android.support.v7 パッケージに含まれているアクション バーを使用して、アプリにアクション バー機能を追加しています。ナビゲーション スピナーの追加中に問題が発生しました。Honecomb より前のデバイスでアプリを実行すると、スピナーのテキストが暗すぎて読みにくくなり、ラジオ ボタンがテキストの横に表示されます。Honecomb が暗いテーマである values/styles.xml で定義される前に、デバイスに Theme.AppCompat テーマを使用していますが、どういうわけかテーマがアクション バー スピナーに正しく適用されていません。スピナーの初期化のコードは次のとおりです。

ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setDisplayShowTitleEnabled(false);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
    actionBar.getThemedContext(),
    android.R.layout.simple_spinner_dropdown_item,
    android.R.id.text1, stringArrayGoesHere());
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
actionBar.setListNavigationCallbacks(adapter, null);

Action Bar Sherlock などの代替ライブラリについて聞いたことがありますが、現時点ではそれらを使用することに興味はありません。

ありがとうございました

4

1 に答える 1

5

顧客テーマの使用中にも同じ問題が発生しました。解決策は、スピナー テキストとスピナー ドロップダウン リスト テキストの 02 xml ファイルを別々に作成することです。あなたのケースでも同じことができると思います。

これはスピナーテキスト用です:(暗いアクションバーでホロを使用しています)

actionbar_spinner.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="7dp"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium.Inverse"
android:textColor="#FFFFFF"
android:textStyle="italic" />

そして、これはドロップダウンリストのテキストです:

actionbar_spinner_dropdown.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:height="40dp"    
    android:paddingLeft="7dp"
    android:textSize="18sp"
    android:textColor="#0099CC" />

次に、これらの xml をコードに入れることができます。次に例を示します。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
    actionBar.getThemedContext(),
    R.layout.actionbar_spinner,
    android.R.id.text1, stringArrayGoesHere());
adapter.setDropDownViewResource(R.layout.actionbar_spinner_dropdown);
actionBar.setListNavigationCallbacks(adapter, null);

それが役に立てば幸い..

于 2013-10-01T03:22:42.870 に答える