如何仅在平板电脑的横屏方向上移除ActionBar选项卡

3

我正在编写一款使用ActionBar选项卡导航的应用程序。当设备处于纵向模式时,用户可以从两个选项卡中选择一个,并且每个选项卡都有一个关联的片段。当平板电脑切换到横向模式时,我希望这些选项卡消失,因为我已经为横向方向定义了一个双窗格布局,其中每个窗格都承载一个片段。我知道在切换时Activity会被重新创建,所以我可以通过仅在纵向方向上创建我的OnCreate选项卡来实现此目的。然而,双窗格布局仅用于平板电脑(我已将其定义为layout-large-land)。对于处于横向模式的手机,应使用具有选项卡的单窗格布局。是否有一种方式可以编码类似于“仅在填充两个窗格布局文件时使用选项卡”的东西,即只有在设备是平板电脑且处于横向模式时才会出现选项卡。


你能发布你代码的相关部分吗?(onCreate()onCreateOptionsMenu() 应该足够了) - a.bertucci
2个回答

4

在values-large-land资源文件夹中添加布尔变量,并将其设置为True,然后在代码中使用它来设置选项卡:

boolean isDualPane = getResources().getBoolean(R.boolean.dualPane);
if(!isDualPane) {
 setupActionBarTabs();
}

3

请在这两个文件夹中定义此布尔值:

values-land/bools.xml:

<bool name="isInLandscape">true</bool>

and this:

values-port/bools.xml

<bool name="isInLandscape">false</bool>

现在你可以这样做:
boolean isInLandscapeMode = getResources().getBoolean(R.bool.isInLandscape);

现在,您可以基于此值创建选项卡,因为当您旋转屏幕时,Activity会重新创建:
if (!isInLandscapeMode){

// add tabs

}

1
谢谢您提供更详细的解释! - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接