想必大家遇到过在同一个界面中,要展示的内容非常多,完全展示出来高度远超过屏幕高度,这时候通常的做法是布局中使用ScrollView进行嵌套,但如果遇到ScrollView嵌套中包含一个或者多个RecyclerView列表的话,还得自定义RecyclerView以解决滑动冲突。那么今天我们这里有一个现成的控件NestedScrollView,用他替代ScrollView,并且不用自定义RecyclerView等列表控件来解决滑动冲突。因为他的内部已经帮我们解决了子View的滑动冲突。
下面我们来看看他的具体用法:
Java代码:
public class NestedScrollViewActivity extends AppCompatActivity { @BindView(R.id.customTitle) TextView customTitle; @BindView(R.id.toolBar) Toolbar toolBar; @BindView(R.id.rvNestedScrollView) RecyclerView rvNestedScrollView; List
integerList; NestedScrollViewAdapter adapter; @BindView(R.id.appBar) AppBarLayout appBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nested_scroll_view); ButterKnife.bind(this); toolBar.setTitle(""); customTitle.setText("NestedScrollView的练习"); setSupportActionBar(toolBar); integerList = intiData(); intiData(); mainViewListData(); } private List
intiData() { return InitData.getInstance().integerList(); } private void mainViewListData() { LinearLayoutManager manager = new LinearLayoutManager(this); manager.setOrientation(LinearLayoutManager.VERTICAL); rvNestedScrollView.setLayoutManager(manager); adapter = new NestedScrollViewAdapter(this, integerList); rvNestedScrollView.setAdapter(adapter); } }
integerList数据:
public class InitData { public static InitData instance; public static InitData getInstance(){ if (instance == null) { synchronized (InitData.class){ if (instance == null) { instance = new InitData(); } } } return instance; } public List
integerList(){ List
integerList = new ArrayList<>(); integerList.add("剑一破"); integerList.add("剑二空"); integerList.add("剑三飞"); integerList.add("剑四灭"); integerList.add("剑五虚"); integerList.add("剑六绝"); integerList.add("剑七真"); integerList.add("剑八玄"); integerList.add("剑九轮回"); integerList.add("剑十天葬"); integerList.add("剑十一涅槃"); integerList.add("剑十二心"); integerList.add("剑一破"); integerList.add("剑二空"); integerList.add("剑三飞"); integerList.add("剑四灭"); integerList.add("剑五虚"); integerList.add("剑六绝"); integerList.add("剑七真"); integerList.add("剑八玄"); integerList.add("剑九轮回"); integerList.add("剑十天葬"); integerList.add("剑十一涅槃"); integerList.add("剑十二心"); integerList.add("剑一破"); integerList.add("剑二空"); integerList.add("剑三飞"); integerList.add("剑四灭"); integerList.add("剑五虚"); integerList.add("剑六绝"); integerList.add("剑七真"); integerList.add("剑八玄"); integerList.add("剑九轮回"); integerList.add("剑十天葬"); integerList.add("剑十一涅槃"); integerList.add("剑十二心"); return integerList; } }
现在我们用NestedScrollView代替ScrollView来试试:
用法很简单,在前面贴出的xml文件中,只需要用android.support.v4.widget.NestedScrollView替代ScrollView,并给RecyclerView设置.setNestedScrollingEnabled(false)属性即可:
rvNestedScrollView.setNestedScrollingEnabled(false);
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219467.html原文链接:https://javaforall.net
