NestedScrollView嵌套常见问题

文章来自:ProcessZ
链接:https://www.jianshu.com/p/3e710a5ee50b
为了便于寻找,在此处收藏下

1、滑动不流畅问题

解决方法一:嵌套滑动不激活。

mRecycleView.setNestedScrollingEnable(false);

解决办法二:

 LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setHasFixedSize(true);//
        recyclerView.setNestedScrollingEnabled(false);//
        layoutManager.setSmoothScrollbarEnabled(true);//
        layoutManager.setAutoMeasureEnabled(true);//

2、当NestedScrollView嵌套RecycleView布局由Fragment管理,Fragment切换时会自动滑动到ReycleView的顶部。

解决方法一:在NestedScrollView唯一子布局中加入

android:descendantFocusability=“blocksDescendants”

android:descendantFocusability 有三个属性:

优先于子控件获取焦点 “beforeDescendants"

当子控件不需要焦点时,获取焦点 ”afterDescendants“

覆盖所有子控件获取焦点 ”blocksDescendants“

解决方法二:

recyclerView.setFocusable(false);

3、ScrollView中的布局不能撑满全屏问题

必须ScrollView设置:

android:fillViewport="true"

4、一个布局,内容很长,里面加了scrollview会自动滚动到底部的问题。查了下资料
,找到scrollview里的其中一个子控件,设置以下代码即可。

mIvAvatar.setFocusable(true);
mIvAvatar.setFocusableInTouchMode(true);
mIvAvatar.requestFocus();

5、android scrollview 自动滚动到顶部或者底部

//设置默认滚动到顶部

  scrollView.post(new Runnable() {
   @Override
   public void run() {
    scrollView.fullScroll(ScrollView.FOCUS_UP);
   }
  });

//设置默认滚动到底部
  scrollView.post(new Runnable() {
   @Override
   public void run() {
    scrollView.fullScroll(ScrollView.FOCUS_DOWN);
   }
  });

还有一种方法,就是在scrollview里面的第一个控件,设置

android:focusable="true"
android:focusableInTouchMode="true"

你可能感兴趣的:(NestedScrollView嵌套常见问题)