使ListView成为ScrollView的一部分

时间:2014-04-15 07:19:25

标签: android listview android-listview scrollview

我有一个布局,我在ScrollView中有多个组件。我想在ScrollView中包含一个List。问题是如果我在滚动视图中包含ListView,ListView会在一个小空间中显示,并且列表也会滚动,因为列表会动态添加项目。 如果我从ScrollView中添加ListView它很好地显示但我不希望列表滚动并成为整个页面的一部分

这是我的代码: -

<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/layoutMain"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:weightSum="10" >

        <ScrollView
            android:id="@+id/scrollNews"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="4" >

            <!-- Main  vertical LinearLayout -->

            <LinearLayout
                android:id="@+id/layoutList"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/txtNewsTitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:padding="10dp"
                    android:text="Large Text"
                    android:textAlignment="center"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <!-- Layout for Date, Likes, comments and views -->

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal" >

                    <LinearLayout
                        android:layout_width="98dp"
                        android:layout_height="wrap_content"
                        android:background="@drawable/rounded_corner" >

                        <TextView
                            android:id="@+id/txtPubDate"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textAppearance="?android:attr/textAppearanceSmall"
                            android:textColor="#F8F8F8"
                            android:textSize="11sp" />
                    </LinearLayout>

                    <ImageButton
                        android:id="@+id/btnViews"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:layout_marginLeft="20dp"
                        android:background="@color/white"
                        android:src="@drawable/btnviewpressed" />

                    <TextView
                        android:id="@+id/txtNewsViews"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="10dp"
                        android:text="view"
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:textColor="#FF3C6FA6" />

                    <ImageButton
                        android:id="@+id/btnComments"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="20dp"
                        android:background="@color/white"
                        android:src="@drawable/btncommentpressed" />

                    <TextView
                        android:id="@+id/txtNewsComments"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="10dp"
                        android:text="view"
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:textColor="#FF3C6FA6" />
                </LinearLayout>

                <ImageView
                    android:id="@+id/imgNewsImage"
                    android:layout_width="200dp"
                    android:layout_height="200dp"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/attini" />

                <TextView
                    android:id="@+id/txtNewsBody"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:padding="10dp"
                    android:text="Small Text"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:padding="10dp" >

                    <ImageView
                        android:id="@+id/btnComms"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="20dp"
                        android:background="@color/white"
                        android:src="@drawable/commspressed" />

                    <ImageButton
                        android:id="@+id/btnAddComms"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="@color/white"
                        android:src="@drawable/btnaddcommspressedxml"
                        android:textSize="10sp" />
                </LinearLayout>
            </LinearLayout>
        </ScrollView>

        <ListView
            android:id="@+id/android:list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/getdata"
            android:layout_gravity="bottom"
            android:layout_weight="6"
            android:divider="#b5b5b5"
            android:dividerHeight="1dp"
            android:listSelector="@drawable/list_selector"
            android:padding="5dp"
            android:transcriptMode="alwaysScroll"
            android:visibility="invisible" />
    </LinearLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

有一些黑客可以在ListView中启用ScrollView,但它们并不好。

  • 您应该只有一个ListView页眉和页脚视图。您应该以编程方式添加这些页眉和页脚。
  • 或者您可以使用ScrollViewLinearLayout代替ListView,然后您可以以编程方式将列表中的项目逐个添加到LinearLayout

如果列表是主要的并且它很大,则第一种方法更好。