我有一个使用 ViewPager + actionbar Sherlock 选项卡的屏幕。我setOnPageChangeListener
在寻呼机上有一套,它执行以下操作:
@Override
public void onPageSelected(final int position) {
actionBar.setSelectedNavigationItem(position);
}
如果我只有几个选项卡并且显示所有选项卡,这在纵向模式下甚至在横向模式下都可以正常工作。但是,如果我在横向中添加更多选项卡,它们会折叠成一个下拉小部件。当我通过 ViewPager 进行分页时,该setSelectedNavigationItem
方法被执行,但现在它对下拉选择没有影响:它停留在最后选择的值。这真的很糟糕,因为用户缺少视觉线索:选项卡可能会显示“一个”,但用户已经在第 6 页上。
有没有办法以编程方式根据位置更改要显示的选项卡?
PS 我知道为什么会这样:这是来自 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 以适当地设置导航模式,但这不应该自动发生吗?
PPS 并且已经为它提交了包含补丁的Android 错误