LinearLayout中的ListView不会增长以显示所有子项

时间:2014-05-16 23:49:20

标签: android android-layout android-listview

我正在建立一个从侧面打开的滑动菜单。在菜单中,有一个ScrollView,其中包含LinearLayout,用于一般布局和滚动。另外,为了显示菜单项,我在LinearLayout内有一个列表视图,这意味着视图层次结构如下:

ScrollView
    LinearLayout
        ListView

我尝试使用自定义适配器填充ListView,该适配器从数组中获取数据。但令人惊讶的是,当我填充数据时,即使被设置为ListViewwrap_content也不会增长以显示其所有子项。相反,它只显示一个项目,但我能够滚动该项目以查看其余项目。

我猜它是因为它已经在ScrollView,但我不想要ListView的滚动功能。我只是希望它显示所有菜单项,让ScrollView负责滚动。菜单项不会超过10,所以我现在不担心内存使用情况。

有没有办法,可能通过扩展ListView来禁用滚动并让它真正做wrap_content

布局XML:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#2e2e2e">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="20dp"
        android:gravity="center_horizontal"
        android:orientation="vertical">

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/menu_profile_picture"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_marginTop="10dp"
            android:src="@drawable/default_profile_picture"
            app:border_color="#FFF"
            app:border_width="2dp"/>

        <com.devspark.robototextview.widget.RobotoTextView
            android:id="@+id/menu_user_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="John Doe"
            android:textColor="#FFF"
            android:textSize="22sp"
            app:typeface="roboto_thin"/>


        <com.devspark.robototextview.widget.RobotoTextView
            android:id="@+id/menu_logged_in"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="LOGGED IN"
            android:textColor="#1e4472"
            android:textSize="15sp"
            app:typeface="roboto_light"/>

        <ListView
            android:id="@+id/menu_items"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_marginTop="20dp" />


        <ImageView
            android:id="@+id/menu_logout_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:src="@drawable/ic_logout"/>

        <com.devspark.robototextview.widget.RobotoTextView
            android:id="@+id/menu_logout_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text="LOG OUT"
            android:textColor="#e20202"
            android:textSize="15sp"
            app:typeface="roboto_light"/>
    </LinearLayout>
</ScrollView>

1 个答案:

答案 0 :(得分:3)

一条黄金法则不是将具有滚动功能的视图放入另一个视图中。

如果您不想要ListView的滚动功能,那么您最好使用TableLayout而非ListView之类的内容,并动态添加{{} 1}}。