9

在iOS中有flashScrollIndicators方法UIScrollView可以让滚动条像第一次显示视图时一样短暂闪烁。

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

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

在这里回答我自己的问题

该方法被调用awakenScrollBars并在View类中定义。不幸的是,方法是protected您必须继承 ScrollView、ListView 或任何您希望其滚动条闪烁的视图。

或者,公共方法也会闪烁滚动条,但前提是滚动位置实际发生了变化。所以 fe不起作用,只有在视图不在顶部时才起作用。scrollToscrollBylistView.scrollBy(0,0)listView.scrollTo(0,0)

如果无法对视图进行子类化,则以下方法似乎可行,尽管不可否认这是一种 hack:

view.setVisibility(View.INVISIBLE);
view.setVisibility(View.VISIBLE);

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

4

2 回答 2

5

我通过强制它直接上下滚动解决了一个类似的问题。

scrollView.scrollBy(0, 1);
scrollView.scrollBy(0, -1);

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

于 2013-08-31T06:06:18.093 回答
0

我尝试isScrollbarFadingEnabled = false先设置强制滚动条出现,然后滚动一下,然后isScrollbarFadingEnabled = true让它消失。

Kotlin 中的以下代码:

scrollview.isScrollbarFadingEnabled = false
        handler.postDelayed(Runnable {
            scrollview.isScrollbarFadingEnabled = true
            scrollview.scrollBy(1, 0)
        }, 600)
于 2018-08-08T05:18:22.673 回答