我有一个显示项目的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>
答案 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()
的方法决定是拦截触摸事件还是将其传递给它的孩子。对于可滚动视图,它们将始终拦截“滑动”移动。所以永远不会去找你的孩子。
你可以尝试修改它,但是如果你考虑一下,你怎么知道你是在试图滚动父母还是试图滚动孩子?想象一下,如果你的一个可滚动的孩子最终占据了你的屏幕宽度,但是你想要滚动你的父母,你将如何管理它?
要点: 它不推荐....如果你真的坚持......那么继续编写你自己的自定义视图来处理逻辑。但我保证你不会很漂亮,几乎不会适用于所有用例。