GridView里面的ListView没有滚动?

时间:2012-02-15 15:06:32

标签: android android-listview

我有一个显示项目的GridView,每个项目都是ListView。

问题是我无法滚动ListView项目,好像GridView正在获取焦点或阻止它从ListViews

有解决方法吗?

感谢

**

  

编辑:

** 这是我的活动布局

<GridView
        android:id="@+id/grid"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:verticalSpacing="35dp"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:columnWidth="300dp"
        android:stretchMode="columnWidth"

        />
</LinearLayout>

每个gridview项具有以下布局:

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

    <ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/list"
         />

</LinearLayout>

2 个答案:

答案 0 :(得分:2)

在ListView中设置属性android:scrollingCache="true"

<ListView android:id="@+id/android:list" 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:scrollingCache="true"
   android:layout_weight="1" />

答案 1 :(得分:1)

您不能在父视图中具有可滚动的可滚动子视图。谷歌不推荐它......它真的很乱。 Read this

有些人一直试图做一个解决方法(看起来不太漂亮),但我怀疑它会对你有用。但无论如何你都可以阅读它,看看你是否可以让它适合你。 Enjoy

它无法工作的主要原因之一是可滚动视图处理触摸的方式。有一个名为dispatchTouchEvent()onInterceptTouchEvent()的方法决定是拦截触摸事件还是将其传递给它的孩子。对于可滚动视图,它们将始终拦截“滑动”移动。所以永远不会去找你的孩子。

你可以尝试修改它,但是如果你考虑一下,你怎么知道你是在试图滚动父母还是试图滚动孩子?想象一下,如果你的一个可滚动的孩子最终占据了你的屏幕宽度,但是你想要滚动你的父母,你将如何管理它?

要点: 它不推荐....如果你真的坚持......那么继续编写你自己的自定义视图来处理逻辑。但我保证你不会很漂亮,几乎不会适用于所有用例。