亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

android:ViewPager和Horizo??ntalScrollVIew

android:ViewPager和Horizo??ntalScrollVIew

ibeautiful 2019-12-20 10:32:30
我的HorizontalScrollView內心深處ViewPager。我設置 requestDisallowInterceptTouchEvent(true);為,HorizontalScrollView但ViewPager有時仍會攔截觸摸事件。我還有其他命令可以用來防止View的父級和祖先攔截觸摸事件嗎?注意:HorizontalScrollView僅占據屏幕的一半。
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

我有同樣的問題。我的解決方案是:


成為的子類ViewPager并添加一個名為的屬性childId。

為該childId屬性創建一個setter 并設置ID HorizontalScrollView。

覆蓋onInterceptTouchEvent()的子類,ViewPager如果childId屬性大于0,則獲取該子項;如果事件在HorizontalScrollView區域中,則返回false。


public class CustomViewPager extends ViewPager {


    private int childId;    


    public CustomViewPager(Context context, AttributeSet attrs) {

        super(context, attrs);

    }   


    @Override

    public boolean onInterceptTouchEvent(MotionEvent event) {

        if (childId > 0) {

            View scroll = findViewById(childId);

            if (scroll != null) {

                Rect rect = new Rect();

                scroll.getHitRect(rect);

                if (rect.contains((int) event.getX(), (int) event.getY())) {

                    return false;

                }

            }

        }

        return super.onInterceptTouchEvent(event);

    }


    public void setChildId(int id) {

        this.childId = id;

    }

}

在onCreate()方法中


viewPager.setChildId(R.id.horizontalScrollViewId);

adapter = new ViewPagerAdapter(this);

viewPager.setAdapter(adapter);

希望這個幫助


查看完整回答
反對 回復 2019-12-20
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

謝謝回復。我稍微修改了您的解決方案,并設法使嵌套的ViewPagers工作:


public class CustomViewPager extends ViewPager {

    private int childId;


    public CustomViewPager(Context context, AttributeSet attrs) {

        super(context, attrs);

    }

     @Override

    public boolean onInterceptTouchEvent(MotionEvent event) {

        if (childId > 0) {          

            ViewPager pager = (ViewPager)findViewById(childId);


            if (pager != null) {           

                pager.requestDisallowInterceptTouchEvent(true);

            }


        }


        return super.onInterceptTouchEvent(event);

    }


    public void setChildId(int id) {

        this.childId = id;

    }

}


查看完整回答
反對 回復 2019-12-20
  • 3 回答
  • 0 關注
  • 423 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號