我有一个项目,当我在模拟器上启动时,布局是有序的,但是当我旋转屏幕时,布局会发生变化。例如,当项目启动时,textview1位于textview2之上,但是当我旋转screeen时,textview1和textview2位于同一个地方。我怎么处理这个?屏幕旋转时我希望布局适应设备。例如,它安装在平板电脑上。布局仍然是一样的。当它安装在智能手机上并且屏幕旋转时,我希望布局仍然相同。
答案 0 :(得分:3)
为您的布局创建两个文件夹:首先是layout-land
,另一个是layout-port
,创建两个不同的xml文件,其名称相同,并根据横向或纵向视图分别为layout-land
和layout-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