8

我的應用程序的某些用戶在橫向模式下使用我的應用程序時遇到了一個奇怪的問題。我正在使用actionbarsherlock並將導航模式設置爲選項卡(使用ActionBar.NAVIGATION_MODE_TABS)。 有些用戶在縱向啓動應用程序時發現,然後旋轉設備,操作欄顯示的是微調列表而非標籤(顯然這是預期的行爲)。問題是微調不可選。ActionBarSherlock微調不可選ActionBar - 主題相關

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> 

+1

那麼,不可選擇的部分是壞的。但是,'NAVIGATION_MODE_TABS'只會偶爾顯示標籤,聽起來很愚蠢。很多時候,它會顯示一個「微調」。我懷疑這是人們使用ViewPager和swipey選項卡(例如,ViewPagerIndicator)替代操作欄中的選項卡的原因之一。有關此問題的更多信息,請參閱:http://code.google.com/p/android/issues/detail?id=24439 – CommonsWare

+0

哇,這看起來很愚蠢!任何想法可能導致微調不可選? – bencallis

+1

打敗我,這就是爲什麼我沒有回答這個問題的原因,希望傑克或其他人可能會加入。如果您在一兩天內得不到答案,請嘗試使用ActionBarSherlock Google Group。 – CommonsWare

回答

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> 

唯一的問題是現在一些微調物品被切斷,取而代之的......雖然我覺得這是一個已知的bug。