Android布局选择问题

标签 android xml layout tablet screen-orientation

我有一个 Activity A,它有两种类型的布局。手机具有单一布局,而平板电脑具有主从布局。 Master-Detail 布局适用于 7 英寸横向和 10 英寸平板电脑。 我使用了以下布局限定符:

-layout - for phones
-layout-sw720dp - for 10 inch tablet
-layout-w820dp-land - for 7 inch tablet landscape
-layout-h820dp - for 7 inch tablet portrait

到目前为止一切正常。

问题:

现在我希望该 Activity 仅在手机纵向模式下工作,在 7 英寸和 10 英寸平板电脑上双向工作,为此我使用了此链接中的以下资源和尺寸限定符 https://stackoverflow.com/a/14793611/373889

for res/values
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
            <bool name="portrait_only">true</bool>
        </resources>

for res/values-sw720dp
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
            <bool name="portrait_only">false</bool>
        </resources>

for res/values-w820dp-land
        <?xml version="1.0" encoding="utf-8"?>
        <resources>
                <bool name="portrait_only">false</bool>
            </resources>

for res/values-h820dp
        <?xml version="1.0" encoding="utf-8"?>
        <resources>
                <bool name="portrait_only">false</bool>
            </resources>

现在的问题是,在 7 英寸平板电脑中,如果以纵向模式启动,则会在两个方向上显示正常的手机布局,如果以横向模式启动,则会在两个方向上显示主从布局。它没有正常工作。手机在正常布局下运行良好,10 英寸平板电脑在双向主从布局下运行良好。

如果这种方法有问题,请告诉我。谢谢。

最佳答案

根据我的经验,我认为您应该为每个屏幕尺寸做一个布局,我认为您做到了。在 setonContentView(...) 之后执行此操作:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

并根据屏幕的高度和宽度锁定或不锁定设备的方向。要锁定,您可以添加这些行:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

并且为了不锁定屏幕,不要在 android list 或 Activity 中添加任何与屏幕方向相关的内容,默认情况下启用旋转。

我希望它有效,让我知道。

关于Android布局选择问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38144965/

相关文章:

java - 等待或 sleep 什么的

Android:强制更新布局

php - 如何解析这个 OFX 文件?

xml - as3 xml 检查元素是否存在

xml - XSLT 和 XSLFO 命名空间

css - 三个表并排溢出div容器?

java - 像在 Android 的 Facebook 应用程序中一样创建登录布局

java - 在应用程序后台发送推文

android - v4 支持库是否在可用时使用新类?

java - 与简单条件混淆