在我的android-app中,我有一个包含FrameLayout
的布局,其中包含GridView
。
每个网格单元由一个RelativeLayout
组成,其中包含TextView
和ListView
。
现在我试图向右和向左滑动。为此,我根据SO问题forEach()
实施了OnSwipeTouchListener
并将其添加到FrameLayout
。
现在,一切正常。除非我要滑过ListView
。如果我在ListView
上滑动,该应用就无法执行任何操作。我认为这是因为ListView
以某种方式捕获TouchEvents本身,而不让我的活动知道根本就有TouchEvent。
我的布局如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.Test"
android:id="@+id/frameLayout">
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="16"
android:rowCount="8"
android:id="@+id/grid">
<RelativeLayout
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/ll3"
android:layout_row="2"
android:layout_column="1"
android:orientation="horizontal" >
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Montag"
android:textSize="40px"
android:background="#66ff66"
android:textStyle="bold"
android:layout_height="55px"
android:id="@+id/tv1"
android:layout_width="match_parent" />
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:layout_below="@+id/tv1"
android:id="@+id/l1">
</ListView>
</RelativeLayout>
</GridLayout>
</FrameLayout>
我像这样设置OnSwipeTouchListener:
frameLayout.setOnTouchListener(new OnSwipeTouchListener(this));
我想我错过了ListView
- 侧面的内容,就像在ListView上禁用触摸一样。
有没有人遇到这个问题或知道解决方案吗?
答案 0 :(得分:0)
您不能将滑动与ListView滚动结合使用。 那是因为父(FrameLayout)方法onInterceptTouchEvent返回false,而你的FrameLayout不希望再接收任何事件,因为ListView是滚动容器。
你可以扩展FrameLayout&amp;在onInterceptTouchEvent方法中做一些特殊的事情来实现你的目标