4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ScrollViewのぐにゃんと動くものの制御

4
Posted at

この言葉では表現しにくい、スクロール出来るコンテンツに出てくるぐにゃんと動くものの制御方法についてです。

it's ぐにゃん

  • ぐにゃんでもうにょんでもいいんですが、スクロール出来るコンポーネントをスライドしたときに出てくるこいつです。
  • 正式な名称はEdgeEffectですね。(まずこの名称にたどり着かないと:frowning2:

gynyan.png

EdgeEffect について

  • APIバージョン 16 から存在している機能
  • 何も設定しなければ、ThemecolorPrimaryに設定されている色に20%(0x33)のアルファ値を設定した値が反映されている?(バージョンによって違うかも)

Code

EdgeEffectの色を変える方法

アプリケーションのThemeに割り当てる方法

  • 影響範囲はアプリケーション全体
  • ScrollView全部がかわるので、RecyclerViewPullToRefresh付きの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

最後に

  • 機能の名前を忘れるとたどりつくのが大変になりますね。
  • 名前を覚えておいて、必要なときに設定を変えてあげましょう。
4
0
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?