我有一個使用ViewPager + actionbar Sherlock標籤的屏幕。我對呼機setOnPageChangeListener
集,並執行以下操作:Actionbar Sherlock - 標籤在橫向滑動時不會改變風景
@Override
public void onPageSelected(final int position) {
actionBar.setSelectedNavigationItem(position);
}
這工作在縱向模式下,甚至在景觀,如果我只有幾個標籤並顯示所有選項卡就好了。但是,如果我在橫向添加更多選項卡,這些選項卡會合併到一個下拉小部件中。當我瀏覽ViewPager時,將執行setSelectedNavigationItem
方法,但現在它對下拉選擇沒有影響:它保持在最後選定的值。這是非常糟糕的,因爲用戶缺少視覺線索:標籤可能會說「一」,但用戶已經在頁面#6。
有沒有辦法以編程方式更改基於位置顯示哪個選項卡?
P.S.我知道爲什麼發生這種情況: 這裏的代碼com.android.internal.app.ActionBarImpl:
public void setSelectedNavigationItem(int position) {
switch (mActionView.getNavigationMode()) {
case NAVIGATION_MODE_TABS:
selectTab(mTabs.get(position));
break;
case NAVIGATION_MODE_LIST:
mActionView.setDropdownSelectedPosition(position);
break;
default:
throw new IllegalStateException(
"setSelectedNavigationIndex not valid for current navigation mode");
}
}
當我經過那一步,我可以看到導航模式仍然NAVIGATION_MODE_TABS雖然標籤顯示爲列表。現在 - 我的膝蓋混亂反應是將代碼放入onConfigurationChanged以適當地設置導航模式,但不應該自動發生?
P.P.S.還有的Android bug申請它已經包含該補丁
此解決方案適用於本機ActionBar,但不適用於兼容性(在薑餅模擬器上)。這怎麼能解決呢? –
謝謝!這絕對有效:-) –
謝謝!最後找到了一個工作解 – Ahmad