【问题标题】:Making ListView part of ScrollView使 ListView 成为 ScrollView 的一部分
【发布时间】:2014-04-15 15:32:11
【问题描述】:

我有一个布局,其中一个 ScrollView 中有多个组件。我想在 ScrollView 中包含一个列表。问题是如果我在滚动视图中包含一个 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>

【问题讨论】:

  • 为什么要在滚动视图中添加列表视图
  • listview 已经可以滚动了。所以不需要将列表视图放在滚动视图中。

标签: android listview android-listview scrollview


【解决方案1】:

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

  • 您应该只有一个ListView 带有页眉和页脚视图。您应该以编程方式添加这些页眉和页脚。
  • 或者您可以使用ScrollViewLinearLayout 而不是ListView,您可以通过编程将列表中的项目一一添加到LinearLayout

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

【讨论】:

  • 列表动态增加。我希望它与主视图一起滚动,使其看起来像一页
  • 所以你必须选择第一种方法。您应该将除列表之外的所有视图放入另一个 XML 文件中。并以编程方式对其进行膨胀并将它们放在列表的标题中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 2013-09-26
相关资源
最近更新 更多