布局无法正确调整方向更改

时间:2012-02-29 21:36:47

标签: android xml

我一直在研究应用程序以开始使用android。我遇到了这样的问题:当我的布局转向另一个不同的方向时,我的布局将无法正确显示:

http://imgur.com/a/aPe2p

这是我的垂直布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="3dip" >

    <EditText
        android:id="@+id/passText"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="5"
        android:hint="Passcode"
        android:inputType="textPassword" />

    <EditText
        android:id="@+id/messageText"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="top|left"
        android:hint="Message" >

        <requestFocus />
    </EditText>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="5"
        android:orientation="horizontal"
        android:weightSum="100" >

        <Button
            android:id="@+id/encodeButton"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:text="Encode" />

        <Button
            android:id="@+id/decodeButton"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:text="Decode" />
    </LinearLayout>

</LinearLayout>

这是我的横向布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="8dip" >

    <EditText
        android:id="@+id/passText"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:hint="Passcode"
        android:inputType="textPassword" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/messageText"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:gravity="top|left"
        android:hint="Message" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:orientation="horizontal"
        android:weightSum="100" >

        <Button
            android:id="@+id/encodeButton"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:text="Encode" />

        <Button
            android:id="@+id/decodeButton"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:text="Decode" />
    </LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

尝试将展开/缩小的项目android:layout_height设置为wrap_content。如果你在这里阅读:

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#attr_android:layout_height

它讨论了三个可能的价值观以及它们的作用。

fill_parent:视图应该与其父视图一样大(减去填充)。从API级别8开始不推荐使用此常量,并将其替换为match_parent。

match_parent:视图应该与其父视图一样大(减去填充)。在API Level 8中引入。

wrap_content:视图应该足够大以封闭其内容(加上填充)。

您应该在其中几个项目上使用wrap_content。下面我添加了一个示例,我将为您的垂直布局更改高度:

<EditText
    android:id="@+id/passText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="5"
    android:hint="Passcode"
    android:inputType="textPassword" />

<EditText
    android:id="@+id/messageText"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="top|left"
    android:hint="Message" >

    <requestFocus />
</EditText>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="5"
    android:orientation="horizontal"
    android:weightSum="100" >

    <Button
        android:id="@+id/encodeButton"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="50"
        android:text="Encode" />

    <Button
        android:id="@+id/decodeButton"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="50"
        android:text="Decode" />
</LinearLayout>