代码之家  ›  专栏  ›  技术社区  ›  Cheok Yan Cheng

调用notifyitemchanged时避免recyclerview显示滚动条

  •  1
  • Cheok Yan Cheng  · 技术社区  · 7 年前

    我注意到,每当我打电话 adapter.notifyItemChanged(row); ,将显示滚动条。

    有没有办法避免这种行为?我不想显示滚动条,在 adapter.notifyitemchanged(行); 是的。下面的屏幕截图是滚动条在 notifyItemChanged(row) 被称为。

    enter image description here

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

    3 回复  |  直到 7 年前
        1
  •  0
  •   masoud vali    7 年前

    添加此行: 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);
    
        2
  •  0
  •   user8959091user8959091    7 年前

    在调用notifyitemchanged之前,请将滚动条大小设置为0,然后将其还原:

    int size = recyclerView.getScrollBarSize();
    recyclerView.setScrollBarSize(0);
    adapter.notifyItemChanged(row);
    recyclerView.setScrollBarSize(size);
    
        3
  •  0
  •   Cheok Yan Cheng    7 年前

    这就是我如何达到我想要的要求。有 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);
                }
            }
        });
    }