我有一个项目,当我在模拟器上启动它时,布局是有序的,但是当我旋转屏幕时,布局会改变。例如,当项目启动时,textview1 位于 textview2 的顶部,但在我旋转屏幕后,textview1 和 textview2 位于同一位置。我该如何处理?当屏幕旋转时。我希望布局适应设备。例如,它安装在平板电脑上。布局还是一样的。当它安装在智能手机上并且屏幕旋转时,我希望布局仍然相同。
4 回答
为您的布局创建两个文件夹:第一个是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
您必须为每个屏幕尺寸和方向创建布局文件
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
一般来说,如果您只有一个布局文件夹,那么您的布局在平板电脑或手机上的横向和纵向模式下应该是相同的,因为 android 找不到要使用的另一种布局。
如果设备满足条件,Android 系统会使用特定布局:
例如,如果设备处于横向状态,它会尝试从文件夹“layout-land”加载名称为 [some-layout.xml] 的布局,但如果它在该文件夹中找不到您的 [some-layout.xml] 文件或“layout-land”文件夹甚至不存在,它使用默认“layout”文件夹中的 [some-layout.xml] 布局。
因此,我认为您的布局文件中一定存在问题,即在横向模式下将 TextViews 放置在同一位置。
否则,如果您想要不同的纵向布局和不同的横向布局,请在资源中创建一个名为“layout-land”的新文件夹,并在布局副本中添加并添加您希望文本视图以不同方式放置的方式横向模式。
你应该使用相对布局
<?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