ActionbarSherlock - 横向无响应的选项卡

时间:2012-04-07 14:24:57

标签: android android-layout android-actionbar actionbarsherlock

我目前正在向我移植我的应用程序,使其在使用actionbarsherlock的3.0之前的设备上运行。

如果用户以纵向模式启动应用程序,然后旋转屏幕并尝试选择选项卡,则在用户执行其他操作之前不会发生任何事情。执行此操作的当前版本可以在此处下载(sherlock-alpha1)http://tinyurl.com/cz95nup

以下列方式添加标签

        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.addTab(bar.newTab().setText("tab1").setTabListener(this),false);
        bar.addTab(bar.newTab().setText("tab2").setTabListener(this),false);
        bar.addTab(bar.newTab().setText("tab3").setTabListener(this),false);

如果您以横向方式启动应用程序,然后在纵向模式下使用它(纵向选项卡将不起作用),也会发生这种情况。

在运行本机操作栏的设备上运行正常。

4 个答案:

答案 0 :(得分:11)

您是否在清单中处理配置更改?

android:configChanges="orientation"

如果是这样,这不允许ActionBarSherlock安装的假装饰视图在旋转时重新初始化,这将导致许多问题。

应尽可能少地使用处理配置更改。文档说明了it should be used as a last resort

该库的未来版本有望为那些选择这样做的人负责。

答案 1 :(得分:3)

对我而言,方向改变后没有反应,而不是横向模式。 经过大量的试验和错误后,我找到了以下解决方案:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    super.onConfigurationChanged(newConfig);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
}

诀窍是将导航模式更改为列表然后更改回标签。

答案 2 :(得分:1)

我找到了解决方法。 可能不是一个正确的实现,因为它重新创建选项卡布局,但它的工作原理:)

https://github.com/JakeWharton/ActionBarSherlock/pull/549

答案 3 :(得分:0)

我遇到了同样的问题。我不得不添加这些线,它在AVD上没问题,不知道它是否在真实设备上工作。

<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:anyDensity="true" />