【问题标题】:How to remove ActionBar tabs in landscape orientation only for tablets如何删除仅适用于平板电脑的横向 ActionBar 选项卡
【发布时间】:2013-05-11 22:50:55
【问题描述】:

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

【问题讨论】:

  • 你能发布你的代码的相关部分吗? (onCreate()onCreateOptionsMenu() 应该够用了)

标签: android android-actionbar android-orientation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    values-land/bools.xml:

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

    还有这个:

    值端口/bools.xml

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

    现在你可以这样做了:

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

    现在您可以根据此值创建选项卡,因为旋转屏幕时会重新创建 Activity:

    if (!isInLandscapeMode){
    
    // add tabs
    
    }
    

    【讨论】:

    • 感谢您更详细的解释!
    猜你喜欢
    • 2014-10-11
    • 1970-01-01
    • 2012-03-08
    • 2011-08-12
    • 2020-12-24
    • 2019-09-19
    • 2014-10-27
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多