NestedScrollView嵌套RecyclerView导致复用机制失效及键盘弹出遮挡问题

1,654 阅读1分钟

NestedScrollView嵌套RecyclerView导致复用机制失效及键盘弹出遮挡问题

原因:NestedScrollView嵌套RecyclerView会导致滑动的时候,滑的是ScrollView,而RecyclerView的高度无限大,故复用机制失效了。在点击末尾item时,键盘也会遮挡,不能正常上移。

解决:将RecyclerView设置固定高度

代码

在设置adapter数据时调用,

setRvListHeight(data.size)
adapter.setNewData(data)
/**
 * 将rv_list设置固定高度,防止NestedScrollView嵌套RecyclerView
 * RecyclerView复用机制失效
 * 也能防止键盘弹出遮挡问题
 */
private fun setRvListHeight(size: Int) {
    if (size >= 10) {//size大小自行调节
        val lp: ViewGroup.LayoutParams = rv_list.layoutParams
        // 获取屏幕高度
        val screenHeight = UIUtils.getScreenHeight(GlobalApplication.getContext())
        lp.height = screenHeight
        rv_list.layoutParams = lp
    } else {
        val lp: ViewGroup.LayoutParams = rv_list.layoutParams
        lp.height = ViewGroup.LayoutParams.MATCH_PARENT
        rv_list.layoutParams = lp
    }
}