【问题标题】:ListView and ScrollView together does not workListView 和 ScrollView 一起不起作用
【发布时间】:2014-03-08 10:14:49
【问题描述】:

我在一项活动中有ListViewScrollView。现在,问题是ListViewScollView 不能一起工作。我有很多活动控件,所以我需要使用 ListView

如果存在 ScrollView,则 ListView 的高度会降低,如图所示。

请帮助我防止这个问题。

我的代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="20dp" >

        <TextView
            android:id="@+id/tvRQPoint"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:textColor="@color/green"
            android:textSize="32sp" />

        <TextView
            android:id="@+id/tvRQQText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/questiontext"
            android:textColor="@color/blue"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/tvRQQuestion"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp" />

        <ImageView
            android:id="@+id/imgRQImage"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dp"
            android:contentDescription="@string/imgdesc" />

        <ListView
            android:id="@+id/lvRQOptions"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:divider="#b5b5b5"
            android:dividerHeight="1dp" />

        <TextView
            android:id="@+id/tvRQAnswer"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginTop="10dp" />

        <Button
            android:id="@+id/btnRQNext"
            android:layout_width="fill_parent"
            android:layout_height="35dp"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:text="@string/next" >
        </Button>

        <Button
            android:id="@+id/btnRQEndTest"
            android:layout_width="fill_parent"
            android:layout_height="35dp"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:background="@drawable/blue_bg"
            android:text="@string/endtest"
            android:textColor="@color/white" >
        </Button>
    </LinearLayout>

</ScrollView>

【问题讨论】:

  • @BlackTiger,谢谢。让我试试看。
  • @BlackTiger,它工作正常。但现在的问题是,当任何项目包含 2 行或更多行的内容时,它会隐藏列表视图的某些部分。如何预防这个问题?
  • 在提供的链接中查看第一个答案并尝试设置此ListView list = (ListView) view.findViewById(R.id.ls); setListViewHeightBasedOnChildren(list);
  • 我说这个答案工作正常。问题是,如果列表视图的任何项目的内容超过 2 行,那么它隐藏了列表视图的某些部分。

标签: android listview android-listview scrollview


【解决方案1】:

切勿在ScrollView 中使用ListViewListView 本身已经有一个内置的滚动,所以你应该使用它,因为你使用的方法违背了 Android 的设计。

如果您无法删除ScrollView,您可能应该考虑简化您的设计或以其他方式重新设计。

【讨论】:

    【解决方案2】:

    您可以做的一件事是仅使用 listView 并将上述元素添加为页眉视图,将以下元素添加为页脚视图。

    列表视图具有以下属性: addHeaderView(查看视图); addFooterView(查看视图)

    在设置列表的适配器之前可以设置的

    【讨论】:

      【解决方案3】:

      嗨,@nKn 说在 ScrollView 中使用 ListView 不好,如果工作的话它也会带来不好的性能,ListView 有自己的滚动属性,你不需要在其中使用滚动视图,为列表视图和其他东西创建单独的布局和按照你想要的方式对齐布局。它对我来说效果很好。

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:overScrollMode="ifContentScrolls"
      android:scrollbarStyle="insideOverlay"
      android:scrollbars="vertical" >
      
      <RelativeLayout
          android:id="@+id/listContainingLayout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_above="@+id/buttonsLayout"
          android:layout_alignParentLeft="true"
          android:layout_alignParentTop="true"
          android:overScrollMode="ifContentScrolls"
          android:scrollbarStyle="insideOverlay"
          android:scrollbars="vertical" >
      
          <ListView
              android:id="@id/android:list"
              android:layout_width="wrap_content"
              android:layout_height="fill_parent" >
          </ListView>
      </RelativeLayout>
      
      <LinearLayout
          android:id="@+id/buttonsLayout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:layout_alignParentLeft="true"
          android:orientation="horizontal" >
      
          <ImageButton
              android:id="@+id/button1"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:src="@drawable/button1" />
      
          <ImageButton
              android:id="@+id/button2"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginLeft="20dp"
              android:src="@drawable/button2" />
      
          <ImageButton
              android:id="@+id/button3"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:src="@drawable/button3" />
      </LinearLayout>
      

      如果您希望按钮固定在屏幕上,我建议您根据优先级对齐按钮,然后可以使用上述格式,但如果您希望按钮位于列表之后,则对齐 buttonsLayout 下面listContainingLayout

      希望对您有所帮助,干杯!...

      【讨论】:

        【解决方案4】:

        ListView 已经具有滚动功能。这就是为什么在 ScrollView 中出现问题的原因。但是尝试为您的 ListView 提供硬编码的宽度。愿这能解决问题

        <ListView android:id="@+id/lvRQOptions" android:layout_width="fill_parent" android:layout_height="300dp" android:layout_marginTop="8dp" android:divider="#b5b5b5" android:dividerHeight="1dp" />

        【讨论】:

        • 如何修复 ListView 的高度?它可以包含多个选项。
        • ListView 将为您的所有选项提供滚动功能。请试一试。希望它会工作
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-22
        相关资源
        最近更新 更多