Android布局优先级

时间:2011-03-31 11:46:08

标签: android android-layout

我正在尝试将屏幕划分为2个部分。上面的部分是一个地图小部件。下面是一个充满小部件的其他布局。问题是地图小部件填满整个屏幕。如何将地图下方的布局推送到地图?

我猜它可以通过给地图小部件一个高度来解决,但这不是很灵活。

我的尝试:

<?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">



    <com.google.android.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:clickable="true" 
        android:apiKey="my api key" />





    <RelativeLayout
        android:id="@+id/map_menu" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_below="@id/mapview"
        android:background="@drawable/locatie_background" >


        <Button android:id="@+id/firstButtonId" android:layout_width="wrap_content" 
            android:layout_height="wrap_content" android:text="@string/action_ready" 
            />

    </RelativeLayout >

</RelativeLayout>

3 个答案:

答案 0 :(得分:4)

使用LinearLayout,将两个孩子的layout_height设置为wrap_content,并将两者的layout_weight设置为1

这会平均划分屏幕高度:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <com.google.android.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:clickable="true"
        android:apiKey="my api key" />
    <RelativeLayout
        android:id="@+id/map_menu" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_below="@id/mapview"
        android:background="@drawable/locatie_background">
        <Button android:id="@+id/firstButtonId"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:text="@string/action_ready" />
    </RelativeLayout >
</LinearLayout>

您可以使用layout_weight,就像它们的百分比值一样:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <com.google.android.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_weight="90"
        android:clickable="true"
        android:apiKey="my api key" />
    <RelativeLayout
        android:id="@+id/map_menu" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_weight="10"
        android:layout_below="@id/mapview"
        android:background="@drawable/locatie_background">
        <Button android:id="@+id/firstButtonId"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:text="@string/action_ready" />
    </RelativeLayout >
</LinearLayout>

答案 1 :(得分:1)

用以下代码替换您的代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:orientation="vertical">



<com.google.android.maps.MapView
    android:id="@+id/mapview"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:clickable="true" 
    android:apiKey="my api key" />





<RelativeLayout
    android:id="@+id/map_menu" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_below="@id/mapview"
    android:background="@drawable/locatie_background" >


    <Button android:id="@+id/firstButtonId" android:layout_width="wrap_content" 
        android:layout_height="wrap_content" android:text="@string/action_ready" 
        />

</RelativeLayout >

</LinearLayout>

答案 2 :(得分:1)

而不是RelativeLayout而不是像这样使用LinearLayout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:orientation="vertical">


<LinearLayout
    android:id="@+id/map_menu1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_weight="1"
    >

    <com.google.android.maps.MapView
    android:id="@+id/mapview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:clickable="true"
    android:apiKey="my api key" />
</LinearLayout >

<LinearLayout
    android:id="@+id/map_menu" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_weight="1"
    >

    <Button android:id="@+id/firstButtonId" android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:text="action_ready" 
        />

</LinearLayout >

</LinearLayout>