8

アプリケーションを横向きモードで使用しているときに、アプリケーションの一部のユーザーに奇妙な問題が発生しています。actionbarsherlock を使用しており、ナビゲーション モードをタブに設定しています (ActionBar.NAVIGATION_MODE_TABS を使用)。一部のユーザーは、縦向きでアプリを起動してからデバイスを回転させると、アクションバーにタブではなくスピナー リストが表示されることに気付きます (これは明らかに予期された動作です)。問題は、スピナーが選択できないことです。

    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.addTab(bar.newTab().setText("Deals").setTabListener(this),false);
    bar.addTab(bar.newTab().setText("Vouchers").setTabListener(this),false);
    bar.addTab(bar.newTab().setText("Freebies").setTabListener(this),false);

編集 それが私のカスタムテーマに関連していることを発見しました。テーマをデフォルトの Sherlock.Light に変更すると、スピナーが選択可能になります。カスタムテーマを以下に示します。

<!-- Variation on the Holo Light theme that styles the Action Bar -->
<style name="DealPadTheme" parent="Theme.Sherlock.Light.ForceOverflow">
    <item name="android:selectableItemBackground">@drawable/ad_selectable_background</item>
    <item name="actionBarItemBackground">@drawable/ad_selectable_background</item>
    <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
    <item name="actionBarTabStyle">@style/MyActionBarTabStyle</item>
    <item name="android:actionBarStyle">@style/Widget.ActionBar</item>
    <item name="actionBarStyle">@style/Widget.ActionBar</item>
    <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item>
    <item name="dropDownListViewStyle">@style/MyDropDownListView</item>
    <item name="android:actionDropDownStyle">@style/MySpinner</item>
    <item name="actionDropDownStyle">@style/MySpinner</item>
    <item name="android:activatedBackgroundIndicator">@drawable/selectable_list_item</item>
    <item name="activatedBackgroundIndicator">@drawable/selectable_list_item</item>
    <item name="android:listSelector">@style/MyListView</item>
</style>

<style name="MyListView" parent="@android:style/Widget.ListView">
    <item name="android:listSelector">@drawable/list_arrow_selected_holo</item>
</style>

<!-- style for the tabs -->
<style name="MyActionBarTabStyle">
    <item name="android:background">@drawable/actionbar_tab_bg</item>
    <item name="android:paddingLeft">16dp</item>
    <item name="android:paddingRight">16dp</item>
    <item name="android:gravity">center_horizontal</item>
</style>

<style name="Widget.ActionBar" parent="Widget.Sherlock.Light.ActionBar">
    <item name="android:displayOptions">showHome|useLogo|showCustom</item>
    <!-- removed as not all activites need it    <item name="android:customNavigationLayout">@layout/custom_action_bar</item> -->
    <item name="android:background">@drawable/ad_tab_unselected_holo</item>
    <item name="background">@drawable/ad_tab_unselected_holo</item>
    <item name="android:titleTextStyle">@style/Widget.ActionBar.Title</item>
    <item name="titleTextStyle">@style/Widget.ActionBar.Title</item>
</style>

<style name="Widget.ActionBar.Title" parent="Widget">
    <item name="android:textSize">12sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">?android:attr/textColorPrimary</item>
</style>

<!-- style the items within the overflow menu -->
<style name="MyDropDownListView" parent="Widget.Sherlock.Light.ListView.DropDown">
    <item name="android:listSelector">@drawable/ad_selectable_background</item>
</style>

<!-- style the items within the overflow menu -->
<style name="MySpinner">
    <item name="android:background">@drawable/spinner_background</item>
</style>

4

1 に答える 1

0

なんと、ActionDropDownStyle のテーマ設定時に親を指定していなかったことが判明しました。

それがテーマに関連していることを発見したのは、新しいプロジェクトを作成したときだけでした.コードに関連する問題か、向きの変更の処理が間違っていると推測しました.

次のようにするとソートされます。

<!-- style the items within the overflow menu -->
<style name="MySpinner" parent="Widget.Sherlock.Light.Spinner.DropDown.ActionBar" >
    <item name="android:background">@drawable/spinner_background</item>
</style>

現在の唯一の問題は、一部のスピナー アイテムが切り取られて置き換えられていることです。これは既知のバグだと思いますが。

于 2012-08-05T16:15:21.750 に答える