更改方向时Xml布局会发生变化

时间:2012-03-09 08:26:32

标签: android xml layout orientation

我有两项活动,根据SD卡的存在而打开。一项活动有三个Buttons和一个TextView,另一个活动有一个ImageView,一个按钮和缩放控件。当我改变方向时,按钮在水平方向上被扰乱。如何解决这个问题?

  

我的'SD'卡布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#1E1E1E"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button_print"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="44dp"
        android:background="@drawable/my_button"
        android:text="@string/print" />

    <TextView
        android:id="@+id/text_SDmissing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="80dp"
        android:text="@string/SDmissing"
        android:textSize="20dp" />

    <Button
        android:id="@+id/button_camera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button_print"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="58dp"
        android:background="@drawable/my_button"
        android:text="@string/camera" />

    <Button
        android:id="@+id/button_insert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_SDmissing"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"
        android:background="@drawable/my_button"
        android:text="@string/insert" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:13)

您必须为纵向和横向模式创建单独的XML文件,并将其放在不同的目录中。设备将自动选择正确的设备。您可以使用以下目录结构

res/layout/my_layout.xml   
res/layout-land/layout.xml

如需进一步参考,您可以查看: http://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:8)

您可以在项目中创建名为“layout-land”的文件夹(在“res”目录中)。在那里,您可以从普通的“布局”文件夹中复制所有xml样式,并将它们重新设置为横向模式。 Android会自动将这些布局用于横向模式。

您的项目将如下所示:

enter image description here