在iOS中,flashScrollIndicators
类上有UIScrollView
方法,允许您像第一次显示视图时那样使滚动条短暂闪烁。
我在文档中找不到与此等效的Android,使滚动条在可滚动视图(ScrollView,ListView,WebView等)上短暂闪烁。我尝试在视图上发出requestLayout()
,但这不起作用。
我问这个的原因是因为我的观点包含在ViewPager
中,当用户滑动到另一个页面时,该页面经常已被绘制并且不会闪烁滚动条。 / p>
在这里回答我自己的问题
该方法称为awakenScrollBars
,在View
类中定义。不幸的是,该方法是protected
,因此您必须子类化ScrollView,ListView或任何您希望其滚动条闪烁的视图。
或者, public 方法scrollTo
和scrollBy
也会闪烁滚动条,但前提是滚动位置实际已更改。所以f.e. listView.scrollBy(0,0)
无效,listView.scrollTo(0,0)
仅在视图未位于顶部时才有效。
如果无法对视图进行子类化,则以下似乎可行,但不可否认,这是一种黑客行为:
view.setVisibility(View.INVISIBLE);
view.setVisibility(View.VISIBLE);
将视图设置为不可见然后立即再次显示似乎不会导致任何重绘,但它具有触发滚动条闪烁的副作用。
答案 0 :(得分:5)
我通过强迫它在彼此之后直接向上和向下滚动来解决类似的问题。
scrollView.scrollBy(0, 1);
scrollView.scrollBy(0, -1);
这会导致滚动视图显示垂直滚动条,除非没有可滚动的内容。
答案 1 :(得分:0)
我尝试先设置isScrollbarFadingEnabled = false
来强制滚动条出现,然后再滚动一点,然后再滚动isScrollbarFadingEnabled = true
使其消失。
下面在Kotlin中的代码:
scrollview.isScrollbarFadingEnabled = false
handler.postDelayed(Runnable {
scrollview.isScrollbarFadingEnabled = true
scrollview.scrollBy(1, 0)
}, 600)