Androidの解决ViewFlipper与ScrollView滑动响应事件拦截的问题
2015-04-26 20:45
489 查看
Androidの解决ViewFlipper与ScrollView滑动响应事件拦截的问题
1. 使用ViewFlipper作为水平滑动容器;需要使用ScrollView作为垂直滑动容器。Android ViewFlipper添加ScrollView后不能滑动了原因是因为activity没有处理滑动效果。 网上都说是
重写
public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub super.dispatchTouchEvent(ev); return gestureDetector.onTouchEvent(ev); }其实该方法要在 scrollview中实现,具体看下面。。不是写在Activity中
这里是主newslist_contentactivity_viewflipper.xml内容了
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#EDE4D6" android:orientation="vertical" > <ViewFlipper android:id="@+id/viewflipper" android:layout_width="fill_parent" android:layout_height="wrap_content" android:clickable="true" android:layout_below="@id/linearLayout1"> </ViewFlipper> </RelativeLayout>
但是我又添加了另一个xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#EDE4D6" android:orientation="vertical" > <com.blueberry.xinli.widget.FriendlyScrollView android:id="@+id/yilincontent_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="none" > <RelativeLayout android:id="@+id/layout_title_textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="13dip" android:layout_marginTop="20dip" android:orientation="vertical" > <TextView android:id="@+id/ntitle_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:text="@string/yilin_top_left_text" android:textColor="#ffdc6a86" android:textSize="25sp" /> <!-- android:layout_centerHorizontal="true" --> <TextView android:id="@+id/nfrom_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/ntitle_textview" android:layout_marginTop="8dip" android:text="@string/yilin_top_left_text" android:textColor="@color/main_news_item_title" android:textSize="18sp" /> </RelativeLayout> </com.blueberry.xinli.widget.FriendlyScrollView> </RelativeLayout>这里我自定义的一个 scrollview 了。。。
需要实现一个自定义的scrollview类了
public class FriendlyScrollView extends ScrollView { GestureDetector gestureDetector; public FriendlyScrollView(Context context) { super(context); gestureDetector = gestureDetector; } public FriendlyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public FriendlyScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public void setGestureDetector(GestureDetector gestureDetector) { this.gestureDetector = gestureDetector; } @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); return gestureDetector.onTouchEvent(event); } @Override public boolean dispatchTouchEvent(MotionEvent ev){ gestureDetector.onTouchEvent(ev); super.dispatchTouchEvent(ev); return true; } }
由于ViewFlipper在外,ScrollView在内,因此一般的做法是定义一个手势响应类来处理响应事件,并将响应事件的处理交给内层的ScrollView。
yilincontent_scroll = (FriendlyScrollView)v.findViewById(R.id.yilincontent_scroll); yilincontent_scroll.setOnTouchListener(new listener()); yilincontent_scroll.setGestureDetector(gestureDetector);
记得在这里添加yilincontent_scroll.setGestureDetector(gestureDetector); 否则会有空指针异常的。。
一下就是如何在Activity中实现手势左右滑动了,要去实现了,这里不做具体内容了。
解决问题关键地点:
自定义一个scrollview,, 重写那个dispatchTouchEvent 方法即可。。
2 .源码下载
下载地址
相关文章推荐
- Android-解决ViewFlipper与ScrollView滑动响应事件拦截的问题
- Android-解决ViewFlipper与ScrollView滑动响应事件拦截的问题
- 解决ViewFlipper与ScrollView滑动响应事件拦截的问题
- 解决ViewFlipper与ScrollView滑动响应事件拦截的问题
- 解决ViewFlipper与ScrollView滑动响应事件拦截的问题
- 对android里布局文件当中的TextView对象设置事件监听,但是不响应问题解决
- 【Android 手势冲突】彻底解决RecyclerView与ScrollView滑动冲突问题,并实现RecyclerView悬停导航栏(附demo)
- Android ScrollView自动滑动问题解决
- Android ScrollView里ViewPager滑动问题解决
- scrollview 嵌套 recyclerview 滑动惯性消失问题解决,recclerview 滑到底部事件
- Android开发之解决ListView和ScrollView滑动冲突的问题
- Android scrollview嵌套listview 滑动事件冲突的解决方法
- Android 解决下拉刷新控件和ScrollVIew的滑动冲突问题。
- 监听滑动事件和消除与内嵌recyclerview冲突的Scrollview(惯性消失问题解决)
- 【Android界面实现】解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题
- 【Android - 问题解决】之ScrollView嵌套ListView时总是自动滑动到ListView顶部的问题
- Android 解决ScrollView嵌套RecyclerView导致滑动不流畅的问题
- Android解决父控件拦截子控件手势滑动事件的问题
- Android ScrollView中嵌套ListView,滑动冲突问题的解决
- 【Android界面实现】解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题