MapView在布局中占据了整个空间

时间:2012-07-22 21:49:05

标签: android

我已经厌倦了尝试解决这个问题,但没有运气。

我的布局由Map View,搜索栏和EditText组成。

mapview占用整个空间的问题,因此EditText文本不会出现。

我试着玩重量但没有运气。

感谢您的帮助。

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

    a:layout_height="fill_parent" >


        <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="wrap_content"
            android:apiKey="somekey"
            android:clickable="true" 

             android:layout_weight="0"
            a:layout_alignParentTop="true"
             />

       <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_marginTop="26dp"
            a:paddingLeft="10dip"
            a:paddingRight="10dip"
            a:paddingTop="30dip"
            android:max="100" >
        </SeekBar>

 <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"
            a:layout_alignParentBottom="true" />

</RelativeLayout>

4 个答案:

答案 0 :(得分:2)

看起来您正在尝试直接在MapView上应用布局权重。相反,将MapView放在父容器中,例如一个FrameLayout并应用布局权重,例如0.7到父容器。

答案 1 :(得分:2)

您应该使用android:layout_weight来规范元素。例如,以这种方式: 我希望它能奏效。

 <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/textlayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:weightSum="15" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="6" >

            <SeekBar
                android:id="@+id/seekBar1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/maplayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="6" >

            <EditText
                android:id="@+id/smsBody"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:hint="test" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="3" >

            <com.google.android.maps.MapView
                android:id="@+id/map"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:apiKey="XXX" />
        </LinearLayout>

    </LinearLayout>

答案 2 :(得分:1)

这就是您所需要的,尝试在MapView或其他元素中设置此属性:

android:layout_above="@+id/.."android:layout_below="@+id/..."

并删除所有权重属性,它们在RelativeLayout中没有用处,因为您可以使用所描述的属性完成工作。 layout_weight通常用于LinearLayout,当所有元素都在堆栈中而不是“填充”在布局中时。

当父布局为RelativeLayout时使用这些属性,并确定哪个布局应该高于另一个布局,通常是整个方向。它还分别为左侧或右侧方向layout_toLeftOflayout_toRightOf

答案 3 :(得分:1)

只需两行简单的代码即可完成:)

    android:layout_alignParentBottom="true"

    android:layout_above="@+id/headerRow"


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg" >

    <FrameLayout
        android:id="@+id/headerRow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="HERE GOES YOUR TEXT" />
    </FrameLayout>

    <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:layout_above="@+id/headerRow"
        android:apiKey="mykey"
        android:clickable="true" />

</RelativeLayout>

这肯定会帮助您完美地完成工作。

谢谢:)