我有一个包含多个子项的LinearLayout,我希望ListView填充父布局的剩余下半部分:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
>
<AutoCompleteTextView
android:id="@+id/from_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp"
android:hint="@string/hint_from"
android:singleLine="true"
android:imeOptions="actionNext"
/>
<AutoCompleteTextView
android:id="@+id/to_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="@string/hint_to"
android:singleLine="true"
android:imeOptions="actionSearch"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/inverse_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".4"
android:layout_margin="10dp"
android:text="@string/inverse"
android:onClick="onClick"
/>
<Button
android:id="@+id/search_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".6"
android:layout_margin="10dp"
android:text="@string/search"
android:onClick="onClick"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp"
android:background="@color/holo_blue_dark"
/>
<ListView
android:id="@+id/favorites_lv"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight=".5"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_gravity="bottom"
android:background="#700"
/>
</LinearLayout>
但我得到了这个结果:
另外,正如您所看到的,ListView项目高度存在问题。项目布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_mylocation"
android:contentDescription="@string/favorites_icon_cd"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:orientation="vertical"
android:gravity="left|center_vertical"
>
<TextView
android:id="@+id/from_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
/>
<TextView
android:id="@+id/to_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
/>
</LinearLayout>
</LinearLayout>
如何解决这些问题?
答案 0 :(得分:3)
我有一个包含多个子项的LinearLayout,我希望ListView填充父布局的剩余下半部分:
您可以尝试将ListView的高度更改为match_parent
,而不是使用layout_weight
:
<ListView
android:id="@+id/favorites_lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
... />
另外,正如您所看到的,ListView项目高度存在问题。
要使用您的布局,只需将嵌套的LinearLayout的高度更改为wrap_content
:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:orientation="vertical"
android:gravity="left|center_vertical"
>
(如果您希望图像居中,可以在ImageView中添加:android:layout_gravity="center_vertical"
。)
虽然如果使用一个RelativeLayout而不是两个LinearLayout,Android绘制速度会更快。试试这个:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginRight="20dp"
android:src="@android:drawable/ic_menu_mylocation"
android:contentDescription="@string/favorites_icon_cd"
/>
<TextView
android:id="@+id/from_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_toRightOf="@id/image"
android:ellipsize="end"
/>
<TextView
android:id="@+id/to_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/from_tv"
android:layout_toRightOf="@id/image"
android:ellipsize="end"
/>
</RelativeLayout>