屏幕旋转时,布局会发生变化

时间:2013-07-25 06:32:30

标签: java android android-layout

我有一个项目,当我在模拟器上启动时,布局是有序的,但是当我旋转屏幕时,布局会发生变化。例如,当项目启动时,textview1位于textview2之上,但是当我旋转screeen时,textview1和textview2位于同一个地方。我怎么处理这个?屏幕旋转时我希望布局适应设备。例如,它安装在平板电脑上。布局仍然是一样的。当它安装在智能手机上并且屏幕旋转时,我希望布局仍然相同。

4 个答案:

答案 0 :(得分:3)

为您的布局创建两个文件夹:首先是layout-land,另一个是layout-port,创建两个不同的xml文件,其名称相同,并根据横向或纵向视图分别为layout-landlayout-port设计您的布局(xml文件)
设备将根据方向自动获取xml文件。

更多信息:

http://developer.android.com/guide/practices/screens_support

---layout-land(folder name)
   ---yourlayout.xml  // same name file with design according to landscape mode
---layout-port(folder name)
   ---yourlayout.xml  // same name file with design according to portrait mode

答案 1 :(得分:1)

您必须为每个屏幕尺寸和方向创建布局文件

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

http://developer.android.com/guide/practices/screens_support.html

答案 2 :(得分:1)

一般情况下,如果您只有一个布局文件夹,那么平板电脑或手机上的横向和纵向模式的布局应该相同,因为Android无法找到另一个要使用的布局。

如果设备符合条件,Android系统会使用特定的布局:

例如如果设备处于横向状态,它会尝试从文件夹“layout-land”加载名称为[some-layout.xml]的布局,但是如果它找不到您的[某些 - layout.xml]文件夹中的文件 或者“layout-land”文件夹甚至不存在,它使用默认“layout”文件夹中的[some-layout.xml]布局。

  

所以我相信你的布局文件一定有问题   将TextView放置在横向模式下的同一位置。

否则,如果您想要一个不同的纵向布局和不同的横向布局, 在您的资源中创建一个名为“layout-land”的新文件夹,并在其中添加一个布局副本,并添加您希望在横向模式下以不同方式放置文本视图的方式。

答案 3 :(得分:0)

你应该使用relative-layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TextView
    android:id="@+id/TextView01"
    android:text="RED"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"></TextView>
<TextView
    android:id="@+id/TextView02"
    android:text="ORANGE"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_below="@+id/TextView01"></TextView>
</RelativeLayout>

如果您想处理配置中的更改,请添加

android:configChanges="keyboardHidden|orientation|screenSize" to your Manifest