LoginSignup
6
3

More than 1 year has passed since last update.

Jetpack ComposeでOverScrollのエフェクトを消す方法

Posted at

Jetpack Compose では 1.1.0 から LazyColumn/LazyRow や  Modifier.verticalScroll/Modifier.horizontalScroll で OverScroll のエフェクトが適用されるようになります。
( Android 11 以前は波のようなエフェクト、Android 12 以降はストレッチのエフェクト)

Android 11以前 Android 12以降

AndroidView では android:overScrollMode="never" で無効にできていましたが、Jetpack Compose ではどうすれば無効にできるのか調べたので書いていこうと思います。

OverScroll を無効にする

LocalOverScrollConfiguration を null で上書きすることで下層の Scrollable な Composable の OverScroll エフェクトを消すことができます。

@Composable
fun Sample() {
    CompositionLocalProvider(
        LocalOverScrollConfiguration provides null
    ) {
        LazyColumn {
            ...
        }
    }
}

OverScrollConfiguration とは何か

LocalOverScrollConfiguration はデフォルトで OverScrollConfiguration を提供しており、その OverScrollConfiguration は OverScroll の色や表示の制御などを設定できるクラスになっています。

OverScrollConfiguration(
    glowColor: Color?,
    forceShowAlways: Boolean?,
    drawPadding: PaddingValues?
)

glowColor を指定すると Android 11 以前の OverScroll のエフェクトを任意の色にすることができます。

ここで設定した OverScrollConfiguration が scroll や Lazy 系で rememberOverScrollController() から受け取ってリストにエフェクトを反映させています。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3