9

iOS には、ビューが最初に表示されたときのように、スクロールバーを短時間点滅させることができるクラスのflashScrollIndicatorsメソッドがあります。UIScrollView

スクロール可能なビュー(ScrollView、ListView、WebViewなど)でスクロールバーを短時間点滅させるために、これに相当するAndroidをドキュメントで見つけることができません。ビューでを発行しようとしrequestLayout()ましたが、うまくいきませんでした。

私がこれを尋ねている理由は、ビューがに含まれてViewPagerおり、ユーザーが別のページにスワイプすると、そのページはすでに描画されており、スクロールバーが点滅しないことが多いためです。

ここで自分の質問に答える

メソッドが呼び出され、クラスawakenScrollBarsで定義されます。View残念ながら、メソッドはprotectedそのため、ScrollView、ListView、またはスクロールバーを点滅させたいビューをサブクラス化する必要があります。

または、パブリックメソッドもスクロール バーscrollToscrollBy点滅させますが、スクロール位置が実際に変更された場合のみです。そのため、 felistView.scrollBy(0,0)は機能せずlistView.scrollTo(0,0)、ビューがまだ一番上にない場合にのみ機能します。

ビューをサブクラス化できない場合、次のように動作するように見えますが、確かにハックのようなものです。

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 に答える