纵向模式和横向模式视图显示调整与手机大小

Posted

技术标签:

【中文标题】纵向模式和横向模式视图显示调整与手机大小【英文标题】:Portrait mode and landscape mode views display adjustment with phone size 【发布时间】:2013-06-09 12:14:23 【问题描述】:

我想根据Landscape modeportrait mode调整布局。

在我的 7' 平板设备中,portrait mode 太小,Landscape mode 相当大。由于小人像模式,列表项和一些文本像按钮一样混合 尺寸变小了,一个文本与另一个文本交叉,等等。

所以对于相同的视图布局,我想根据模式有不同的设置。

例如,考虑One Layout over the Top of Other 的这个 SO 帖子。我想要portrait mode 的这种情况。但是对于Landscape mode,我不希望一个视图重叠 在另一个视图之上。相反,我希望在另一侧看到一个视图。

我的不同模式的xml布局文件-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_
    android:layout_>

    <FrameLayout
              android:id="@+id/news_fragment"
              android:layout_weight="1"
              android:layout_              
              android:layout_ />

    <FrameLayout
              android:id="@+id/channel_fragment"
              android:layout_weight="2"
              android:layout_
              android:layout_ />

</LinearLayout>

问题是这对landscape mode 来说似乎很好,但在纵向模式下,我需要news_fragmentchannel_fragment 重叠。

考虑到布局文件是相同的,如何实现这种行为。还是我也必须为肖像创建一个新的?

【问题讨论】:

【参考方案1】:

您只需创建 2 个不同的布局文件。你应该阅读关于这个主题的developer guides。

基本上你会创建 2 个 res/layout 文件夹: res/layoutres/layout-land

然后将横向布局添加到land 文件夹,将纵向版本添加到另一个。

【讨论】:

实际上我有 2 个 res/layout 文件:res/layout/activity_mainres/layout-large/activity_main。但前者适用于平板设备,后者适用于移动设备。我还需要再创建 2 个 - 1 个用于纵向,1 个用于横向吗?上面有问题的 xml 是针对平板设备的。 @SaurabhJain,是的,但是您可以同时有多个选项,例如: res/layout-large-land (有一个顺序,不确定这是正确的,但您可以阅读关于它在开发者指南) 起初这很令人困惑。你知道平板设备纵向模式的布局文件的名称是什么吗?或者你有什么文档可以看吗?是res/layout-large-port 吗? @SaurabhJain 如果您有一个用于陆地的,常规的将用于港口,因此您无需为港口制作文件夹。 但是如果我不为端口创建一个文件夹,那么我怎样才能让一个视图与另一个视图重叠呢?一个用于土地的视图是一个接一个的视图,并且不重叠。不为端口制作其他文件夹可以吗?【参考方案2】:

所以根据场景:

我保留了三个布局文件夹,即..

res/layout/activity_main(用于移动设备) res/layout-large/activity_main(适用于纵向模式的平板设备) res/layout-large-land/activity_main(适用于横向模式的平板设备)

所有三个布局文件都包含自己的容器,以根据需要进行相应的显示。

诀窍是:

由于layout-large-land 的activity_main 负责平板设备的横向方向,因此layout-large 的activity_main 将默认为 纵向模式。

所以对于移动设备视图,对于不同方向的平板电脑——上述方案是最好的 并且工作得很好!

【讨论】:

以上是关于纵向模式和横向模式视图显示调整与手机大小的主要内容,如果未能解决你的问题,请参考以下文章

添加子视图时,如果应用程序处于横向模式,则视图不会调整大小

iPad添加视图然后告诉它根据方向模式调整大小?

TableView Rotation 调整子视图的大小

嵌套 UIView 调整大小

横向模式下的导航控制器堆栈,但总是以纵向帧大小模态呈现视图控制器视图

从纵向模式旋转到横向模式时不调整子视图