CoordinatorLayout+AppBarLayout+TabLayout+ViewPager+RecyclerView 刷新,不能滑动

开发中有功能需要使用CoordinatorLayout+AppBarLayout+TabLayout+ViewPager+RecyclerView ,但是发现有时刷新后没法正常滑动,只能在viewpager中才能上下滑动,在appbarlayout中无法滑动,查找资料后找到解决方法:

CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) layoutParams.getBehavior();
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
    @Override
    public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
        return true;
    }
});

但是发现在onCreate中调用后报空指针异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.AppBarLayout$Behavior.setDragCallback(android.support.design.widget.AppBarLayout$BaseBehavior$BaseDragCallback)' on a null object reference

之后发现在外面包一层runnable就ok了:

appBarLayout.post(new Runnable() {
    @Override
    public void run() {
        CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams)         appBarLayout.getLayoutParams();
        AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) layoutParams.getBehavior();
        behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
            @Override
            public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
                return true;
            }
        });
    }
});

问题解决了,个人留作备注 ,如果有更好的方法,大家一起学习。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值