【问题标题】:Create specific layout for 7 inch tablet for portrait /landscape changing the layout为 7 英寸平板电脑创建特定布局以进行纵向/横向更改布局
【发布时间】:2013-03-12 13:45:59
【问题描述】:

我正在开发带有片段的典型平板电脑应用程序:左侧是元素列表,右侧是内容。对于智能手机版本,我只展示了一个带有元素列表的片段,而对于平板电脑,我展示了 2 个带有列表和内容的片段。

为了处理屏幕旋转,我正在处理我的应用程序的旋转。当用户旋转屏幕并且我在右侧显示图像或一些文本时,我会全屏显示:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Log.i(TAG, "onConfigurationChanged");
    if(MainFragmentActivity.isTablet)
    {   
        FragmentManager fm = getSupportFragmentManager();
        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE && !frameTabs.isShown()) //Show again the tabs fragment
        {
            Utils.goNormalScreen(this);
            frameTabs.setVisibility(View.VISIBLE);
        }
        else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT && (fm.findFragmentByTag(Utils.SHOW_IMAGE_TAG) != null || fm.findFragmentByTag(Utils.SHOW_TEXT_TAG) != null 
                || fm.findFragmentByTag(Utils.SHOW_WEB_TAG) != null)) //Hide tabs fragment
        {
            Log.i(TAG, "Detected showing image");
            Utils.goFullScreen(this);
            frameTabs.setVisibility(View.GONE);
        }
    }
}

问题是 7 英寸平板电脑:在纵向模式下,我想显示智能手机版本(1 个片段和列表),在横向模式下,平板电脑版本和 2 个片段。

所以在 onConfigurationChanged() 中我需要检测 7 英寸平板电脑并重新创建活动以更改布局,不是吗?怎么做?有没有其他更好的方法让它发挥作用?

我应该重新创建从服务器 (ListView) 再次获取所有数据的活动,还是将数据保存在包中并在轮换时重复使用它更好?

【问题讨论】:

    标签: android layout rotation screen tablet


    【解决方案1】:

    首先,停止处理配置更改,然后将 2 片段布局放入 layout-sw600dp-land 中,其余部分保持原样。现在 Android 将决定在旋转时自动使用该布局。

    【讨论】:

    • 问题是,据我所知,如果我想在用户在显示图像/文本时旋转设备时全屏显示,我真的需要处理配置更改。有没有其他方法可以获得这个功能?如果我处理旋转,那么我必须手动更改 7 英寸平板电脑的布局。
    • 换句话说,我想手动处理除 7 英寸平板电脑之外的所有情况的屏幕旋转。在这种情况下,我只想显示不同的布局。有可能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多