0

为什么我的布局(如下所示)包含EditTextand Button,但未显示?MapView占据了整个视野。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
    a:layout_width="fill_parent"
    a:layout_height="fill_parent" >

<LinearLayout
    a:layout_width="fill_parent"
    a:layout_height="wrap_content"
    a:orientation="vertical" >

    <LinearLayout
        a:layout_width="fill_parent"
        a:layout_height="wrap_content"
        a:orientation="vertical" >

        <RelativeLayout
            a:layout_width="fill_parent"
            a:layout_height="40dip"
            a:background="#50ffffff"
            a:orientation="horizontal"
            a:paddingBottom="0dip"
            a:paddingLeft="5dip"
            a:paddingRight="5dip"
            a:paddingTop="5dip" >

            <Button
                a:id="@+id/smsCancelButton"
                a:layout_width="70dip"
                a:layout_height="40dip"
                a:layout_alignParentRight="true"
                a:layout_weight="1.0"
                a:enabled="false"
                a:text="@string/sms_cancel_abbr" />
        </RelativeLayout>

        <com.google.android.maps.MapView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/mapview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:apiKey="not shown"
            android:clickable="true" />
    </LinearLayout>

    <SeekBar
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="26dp"
        a:paddingLeft="10dip"
        a:paddingRight="10dip"
        a:paddingTop="30dip"
        android:max="100" >
    </SeekBar>
</LinearLayout>
<!-- #dcdcdc -->

<LinearLayout
    a:layout_width="fill_parent"
    a:layout_height="wrap_content"
    a:layout_alignParentBottom="true"
    a:background="#dcdcdc"
    a:orientation="horizontal"
    a:paddingBottom="5dip"
    a:paddingLeft="5dip"
    a:paddingRight="5dip"
    a:paddingTop="5dip" >

    <EditText
        a:id="@+id/smsBody"
        a:layout_width="0dip"
        a:layout_height="wrap_content"
        a:layout_weight="1.0"
        a:autoText="true"
        a:capitalize="sentences"
        a:hint="@string/sms_enter_message"
        a:imeOptions="actionSend|flagNoEnterAction"
        a:inputType="textShortMessage|textAutoCorrect|textCapSentences|textMultiLine"
        a:maxLines="10"
        a:nextFocusRight="@+id/send_button" />

    <LinearLayout
        a:layout_width="wrap_content"
        a:layout_height="wrap_content"
        a:orientation="vertical" >

        <Button
            a:id="@+id/smsSendButton"
            a:layout_width="wrap_content"
            a:layout_height="wrap_content"
            a:layout_marginLeft="5dip"
            a:layout_weight="1.0"
            a:enabled="false"
            a:nextFocusLeft="@+id/smsBody"
            a:text="@string/sms_send_abbr" />
    </LinearLayout>
</LinearLayout>

4

1 回答 1

1

您的最顶层LinearLayout没有明确设置方向。 如果您不指定方向,则LinearLayout默认为方向。horizontal因此,包含地图的第一个窗格(其宽度设置为fill_parent)填满了整个屏幕,而包含 和 的第二个窗格EditTextButton屏幕的右侧被截断。

您需要注意,将任何子元素设置在LinearLayoutto 中match_parent会占用所有剩余空间,因此任何跟随的子元素都不会显示。例如,假设您有一个垂直的 LL 和四个孩子:abcd。高度a设置为wrap_content,并且可能只有 10 或 20dp 高。 b将高度设置为fill_parentc并且d两者都将高度设置为wrap_content。在此示例中,b将填满未被 a 占用的整个屏幕,c并且d永远不会显示。这是一个令人沮丧的限制LinearLayout,您可以部分但不是完全地使用权重解决方法。

于 2012-07-21T00:09:11.070 回答