避免在调用notifyItemChanged时RecyclerView显示滚动条

时间:2018-07-18 15:43:33

标签: android

我注意到,每当我调用adapter.notifyItemChanged(row);时,都会显示滚动条。

有什么办法可以避免这种行为?我不希望在adapter.notifyItemChanged(row);期间不显示滚动条。下面的屏幕截图是调用notifyItemChanged(row)时滚动条的显示方式。

enter image description here

但是,当实际手势滚动发生时,我仍然希望滚动条可见。

3 个答案:

答案 0 :(得分:0)

添加此行:android:scrollbars="none"

 <android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="none"
    >
</android.support.v7.widget.RecyclerView>

对于临时隐形,请尝试以下操作:

recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
adapter.notifyItemChanged(row);
recyclerView.setOverScrollMode(View.OVER_SCROLL_ALWAYS);

答案 1 :(得分:0)

在调用notifyItemChanged之前将滚动条大小设置为0,然后将其恢复:

int size = recyclerView.getScrollBarSize();
recyclerView.setScrollBarSize(0);
adapter.notifyItemChanged(row);
recyclerView.setScrollBarSize(size);

答案 2 :(得分:0)

这就是我达到期望要求的方式。使用post是解决方案的关键。

recyclerView.setVerticalScrollBarEnabled(false);
try {
    // Do something.
} finally {
    recyclerView.post(new Runnable() {
        @Override
        public void run() {
            // Not sure whether if check is necessary.
            if (recyclerView != null) {
                recyclerView.setVerticalScrollBarEnabled(true);
            }
        }
    });
}