我目前正在向我移植我的应用程序,使其在使用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);
如果您以横向方式启动应用程序,然后在纵向模式下使用它(纵向选项卡将不起作用),也会发生这种情况。
在运行本机操作栏的设备上运行正常。
答案 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)
我找到了解决方法。 可能不是一个正确的实现,因为它重新创建选项卡布局,但它的工作原理:)
答案 3 :(得分:0)
我遇到了同样的问题。我不得不添加这些线,它在AVD上没问题,不知道它是否在真实设备上工作。
<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:anyDensity="true" />