如何仅针对平板电脑以横向方向删除ActionBar选项卡

时间:2013-05-11 22:50:56

标签: android android-actionbar android-orientation

我目前正在编写一个使用ActionBar标签进行导航的应用。当设备处于纵向模式时,用户可以选择两个选项卡,每个选项卡都有一个关联的片段。当平板电脑切换到横向时,我希望这些标签消失,因为我有一个为横向定义的双窗格布局,其中每个窗格托管其中一个片段。我知道在切换期间重新创建了Activity,因此我可以在代码中通过仅在方向为纵向时在我的OnCreate中创建选项卡来实现此目的。但是,两个窗格布局仅用于平板电脑(我在layout-large-land中定义了它)。对于横向移动电话,应使用带选项卡的单一窗格布局。有没有一种方法可以编写类似“只在两个窗格布局文件被充气时使用标签”的方式,即只有当设备是平板电脑并处于横向模式时才会显示标签。

2 个答案:

答案 0 :(得分:4)

将boolean变量添加到values-large-land中的资源并将其设置为true,然后在代码中使用它来设置标签:

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

答案 1 :(得分:3)

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

值-脊/ bools.xml:

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

和此:

值端口/ bools.xml

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

现在你可以这样做:

boolean isInLandscapeMode = getResources().getBoolean(R.bool.isInLandscape);

现在您可以根据此值创建标签,因为在您旋转屏幕时会重新创建活动:

if (!isInLandscapeMode){

// add tabs

}