我已经厌倦了尝试解决这个问题,但没有运气。
我的布局由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>
答案 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_toLeftOf
和layout_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>
这肯定会帮助您完美地完成工作。
谢谢:)