对齐两个控件,其中一个使用所有可用空间 - Android

时间:2012-07-23 08:19:31

标签: android android-layout

非常简单的问题,但我似乎无法正确配置。

我将ListVieww对齐,占用100dp的layout_width,而MapControl占用剩余空间。 (我宁愿占用剩余的空间来利用手机处于水平位置。

这就是我现在所拥有的。

<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:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:layout_gravity="left" >


                 <com.google.android.maps.MapView
                 android:id="@+id/gmap"
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:clickable="true"
                 android:layout_gravity="left"
                 />
                 </LinearLayout>

        <LinearLayout 
        android:id="@+id/maplst"
        android:layout_width="100dp"
        android:layout_gravity="right"
        android:layout_height="fill_parent"
        android:orientation="vertical" > 

        <ListView
        android:id="@+id/listView1"
        android:layout_width="118dp"
        style="@style/listViewStyle"
        android:layout_height="wrap_content" android:layout_gravity="right">
    </ListView>
    </LinearLayout>  


</LinearLayout>

2 个答案:

答案 0 :(得分:2)

我认为你不需要所有这些布局(优化点)。要占用剩余空间,请使用layout_width="0dp"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="horizontal" >

     <com.google.android.maps.MapView
                 android:id="@+id/gmap"
                 android:layout_width="0dp"
                 android:layout_weight="1"
                 android:layout_height="fill_parent"
                 android:clickable="true"
                 />

      <ListView
             android:id="@+id/listView1"
             android:layout_width="100dp"
             style="@style/listViewStyle"
             android:layout_height="wrap_content">
       </ListView>


</LinearLayout>

答案 1 :(得分:1)

以下是listview在屏幕左侧对齐的代码,占用100dp空间,其余由mapview占用。

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

    <LinearLayout
        android:id="@+id/maplst"
        android:layout_width="100dp"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/listView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </ListView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:layout_toLeftOf="@+id/maplst">

        <com.google.android.maps.MapView
            android:id="@+id/gmap"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:clickable="true" />
    </LinearLayout>

</RelativeLayout>