使滚动条从代码中闪烁(如iOS flashScrollIndicators)

Jaa*_*tum 9 android scrollbar scrollview

在iOS中flashScrollIndicators,UIScrollView类上的方法允许您使滚动条像第一次显示视图时一样短暂闪烁.

我在文档中找不到与此等效的Android,使滚动条在可滚动视图(ScrollView,ListView,WebView等)上短暂闪烁.我尝试requestLayout()在视图上发布一个,但是没有用.

我问这个的原因是因为我的视图包含在a中ViewPager,当用户滑动到不同的页面时,该页面通常已经被绘制并且不会闪烁滚动条.

在这里回答我自己的问题

该方法被调用awakenScrollBars并在View类中定义.不幸的是,这个方法是protected你必须子类化ScrollView,ListView或任何你希望它的滚动条闪烁的视图.

另外,在公共方法scrollToscrollBy还闪烁滚动条,但只有当滚动位置实际上已经改变了.所以fe listView.scrollBy(0,0)不会起作用,listView.scrollTo(0,0)只有在视图不在顶部时才有效.

如果无法对视图进行子类化,则以下似乎可行,但不可否认它是一种黑客行为:

view.setVisibility(View.INVISIBLE);
view.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)

将视图设置为不可见然后立即再次显示似乎不会导致任何重绘,但它具有触发滚动条闪烁的副作用.

Guy*_*vis 5

我通过强制它在彼此之后直接向上和向下滚动来解决类似的问题.

scrollView.scrollBy(0, 1);
scrollView.scrollBy(0, -1);
Run Code Online (Sandbox Code Playgroud)

这会导致滚动视图显示垂直滚动条,除非没有可滚动的内容.