android ViewGroup 里有子View ListView,如何处理好ViewGroup的左右滑动,与ListView的触摸事件 105
关于Android的触摸事件传递机制,处理得不好,布局为一个ViewGroup父容器中有一个子ViewListView,在左右滑动时,要让ViewGroup处理翻页,上下...
关于Android 的触摸事件传递机制,处理得不好,布局为一个ViewGroup 父容器中有一个子View ListView,在左右滑动时,要让ViewGroup处理翻页,上下滑动时为ListView的滑动,以及点击事件时要能触发ListView的点击事件,但是现在的问题是,ViewGroup能左右滑动时,ListView没有了上下滑动及点击事件,或者是ListView有了上下滑动及点击事件,则ViewGroup没有了左右滑动效果,还望各大祸解惑,十分感谢!
具体布局:
<com.fee.touchstudy.MyScrollLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.fee.touchstudy.LayoutView2
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.fee.touchstudy.MyTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"
android:text="AB"
android:textSize="40sp"
android:textStyle="bold"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="#0000FF"/>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/item_divider_gray"
android:focusable="true"
android:focusableInTouchMode="true"
android:entries="@array/lv_data"
android:choiceMode="multipleChoice"
/>
</com.fee.touchstudy.LayoutView2>
</com.fee.touchstudy.MyScrollLayout>
我知道,处理触摸事件
我知道,处理触摸事件,主要是在自定义的ViewGroup类里的以下方法:
public boolean onInterceptTouchEvent(MotionEvent ev);
public boolean onTouchEvent(MotionEvent event)
但是要如何完美处理Touch事件,才能使ViewGroup 与其子View ListView 各功能都有效且不冲突。 展开
具体布局:
<com.fee.touchstudy.MyScrollLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.fee.touchstudy.LayoutView2
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.fee.touchstudy.MyTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"
android:text="AB"
android:textSize="40sp"
android:textStyle="bold"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="#0000FF"/>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/item_divider_gray"
android:focusable="true"
android:focusableInTouchMode="true"
android:entries="@array/lv_data"
android:choiceMode="multipleChoice"
/>
</com.fee.touchstudy.LayoutView2>
</com.fee.touchstudy.MyScrollLayout>
我知道,处理触摸事件
我知道,处理触摸事件,主要是在自定义的ViewGroup类里的以下方法:
public boolean onInterceptTouchEvent(MotionEvent ev);
public boolean onTouchEvent(MotionEvent event)
但是要如何完美处理Touch事件,才能使ViewGroup 与其子View ListView 各功能都有效且不冲突。 展开
展开全部
两个方法都知道了剩的不是好写了么?
在你的ViewGroup里的onInterceptTouchEvent(),
进行手势的判断,
如果X轴位移大于Y轴位移,说明应该响应ViewGroup的左右翻页动作,return true,
反之,则return false,使这个触摸事件继续往下传递到ListView,然后ListView响应这个上下滑动事件。
建议你学习一下android的事件传递机制。
在你的ViewGroup里的onInterceptTouchEvent(),
进行手势的判断,
如果X轴位移大于Y轴位移,说明应该响应ViewGroup的左右翻页动作,return true,
反之,则return false,使这个触摸事件继续往下传递到ListView,然后ListView响应这个上下滑动事件。
建议你学习一下android的事件传递机制。
追问
如果在ViewGroup里 的onInterceptTouchEvent()
里有return true的话,其子View是收不到Touch事件了的,而是直接交给ViewGroup它自己消费了
追答
是的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询