2012-02-15 100 views
3

我有一个显示项目的GridView,每个项目是一个ListView。GridView里面的ListView不滚动?

的问题是,我不能滚动ListView的项目,似乎是在GridView是获得焦点或阻止它的列表视图

有没有办法解决这个?

感谢

**

编辑:

** 这里是我的活动布局

<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> 

回答

1

你不能有一个可滚动父视图中的滚动子视图。谷歌不推荐它......而且它真的很混乱。 Read this

有人一直在试图做一个解决方法(这看起来不漂亮),但我怀疑它会为你工作。但是,无论如何,你可以阅读它,看看你是否可以为你工作。 Enjoy

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

您可以尝试对其进行修改,但是如果您仔细考虑它,您会如何知道您是要滚动父级还是要滚动孩子?想象一下,如果你的一个可滚动的孩子最终占据了你的屏幕宽度,但是你想滚动你的父母,你将如何管理?

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

+0

我结束了实现我自己的自定义视图 – 2012-02-19 08:06:56

2

集属性android:scrollingCache="true"在你的ListView

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

对不起,没有工作 – 2012-02-15 15:15:09

+0

嗯....尝试'listView.setOverScrollMode(View.OVER_SCROLL_ALWAYS)' – 2012-02-15 15:20:57

+0

没有任何工作,我相信这是与可聚焦性问题 – 2012-02-15 15:26:40

相关问题