この言葉では表現しにくい、スクロール出来るコンテンツに出てくるぐにゃんと動くものの制御方法についてです。
it's ぐにゃん
- ぐにゃんでもうにょんでもいいんですが、スクロール出来るコンポーネントをスライドしたときに出てくるこいつです。
- 正式な名称はEdgeEffectですね。(まずこの名称にたどり着かないと
)
EdgeEffect について
- APIバージョン
16から存在している機能 - 何も設定しなければ、
ThemeのcolorPrimaryに設定されている色に20%(0x33)のアルファ値を設定した値が反映されている?(バージョンによって違うかも)
EdgeEffectの色を変える方法
アプリケーションのThemeに割り当てる方法
- 影響範囲はアプリケーション全体
-
ScrollView全部がかわるので、RecyclerViewやPullToRefresh付きのWebViewも影響を受けます
設定方法
- Themeに追加して利用します。
-
Activityで利用しているThemeであればActivity全体が変更されます。
<style name="Theme.MyApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
・・・
<item name="android:colorEdgeEffect">#0000FF</item>
・・・
</style>
EdgeEffectの表示をコンポーネントで切り替える
- EdgeEffectの表示切り替える設定には
overScrollModeを利用します。 -
overScrollModeには3つのパラメータが用意されています。
| パラメータ | 動き |
|---|---|
| always | 常にエフェクトを表示する |
| ifContentScrolls | 表示している内容がスクロールするものの場合にのみエフェクトを表示する |
| never | エフェクトを表示しない |
XMLで設定する
<androidx.core.widget.NestedScrollView
・・・
android:overScrollMode="ifContentScrolls"
・・・
tools:showIn="@layout/activity_scrolling">
プログラムで設定する
scrollView.overScrollMode = View.OVER_SCROLL_ALWAYS
最後に
- 機能の名前を忘れるとたどりつくのが大変になりますね。
- 名前を覚えておいて、必要なときに設定を変えてあげましょう。
