166.n1-事件分发,让父类不要拦截

来源:互联网 发布:淘宝自己开的店铺呢 编辑:程序博客网 时间:2024/06/04 18:48

ViewPagerIndicator中父类不拦截

TabPageIndicator.java中让父类的不处理请求

    /** * 事件分发, 请求父控件及祖宗控件不要拦截事件 */@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {getParent().requestDisallowInterceptTouchEvent(true);// 用getParent去请求return super.dispatchTouchEvent(ev);}

菜单的新闻条目,不拦截详情内容的方法

news_menu_details.xml中的Viewpager不再继承V4中的ViewPager而是继承自定义的ViewPager,让父类不拦截处理的请求

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <LinearLayout         android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal"        >        <!-- 使用开源的框架PageIndicator实现Tab -->    <com.viewpagerindicator.TabPageIndicator            android:id="@+id/indicator"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_weight="1" />        <ImageButton            android:id="@+id/btn_next"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:background="@android:color/transparent"            android:padding="5dp"            android:src="@drawable/news_cate_arr" />    </LinearLayout>    <!-- 详情的viewpager -->    <com.ldw.news.view.HorizontalViewPager        android:id="@+id/vp_menu_detail"        android:layout_width="match_parent"    android:layout_height="match_parent"        /></LinearLayout>
HorizontalViewPager.java让内容详情页不被拦截
package com.ldw.news.view;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;/* * 详情内容左滑动的时候请求父类不要拦截滑动事件,新闻的11个页签 */public class HorizontalViewPager extends ViewPager {public HorizontalViewPager(Context context, AttributeSet attrs) {super(context, attrs);}public HorizontalViewPager(Context context) {super(context);}/* * 事件分发, 请求父控件及祖宗控件是否拦截事件 */@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (getCurrentItem() != 0) {getParent().requestDisallowInterceptTouchEvent(true);// 用getParent去请求,// 不拦截} else {// 如果是第一个页面,需要显示侧边栏, 请求父控件拦截getParent().requestDisallowInterceptTouchEvent(false);// 拦截}return super.dispatchTouchEvent(ev);}}


0 0
原创粉丝点击