0
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 3 years have passed since last update.

Androidでスクロール時に他の要素と被ってしまう時の対処法

Last updated at Posted at 2022-09-13

目次

  1. はじめに
  2. 解消方法
  3. 解説
  4. 最後に

はじめに

スクロールを含む画面を作る際に、
iOSでは問題がないのに、
Androidだけスクロール時のレイアウトが崩れてしまう時があります。

↓Androidだけ、スクロール時に一覧部分が「クーポン一覧」のヘッダーに被っている

iOS Android
ezgif-1-71832ce8b9.gif ezgif-1-9167ce6eed.gif

今回は、この不具合を解消する方法をご紹介します!

解消方法

今回のプロジェクトは、
上からヘッダー、メイン、フッターの順番で以下のような構造になっています。

スクロールの不具合を解消するためには、
真ん中のFlexContainer(今回はflxMain)の設定を変更してあげるだけで解消できます。
スクリーンショット 0004-09-12 18.29.31.png

真ん中の要素をクリックして選択状態にしたら、
右メニューのFlexContainerタブを確認して下さい。

一番上の「Clip Bounds」の設定がデフォルトでOFFになっていると思うので、
ONに変更してください。
スクリーンショット 0004-09-12 18.33.34.png

以上で完了です!

早速、動作チェックをしてみましょう。

スクロールをしても、ヘッダーに被ることなく
正常に表示されるようになりましたね!
ezgif-1-6a2070b0c7.gif

解説

今回の不具合の原因を簡単に説明します:writing_hand_tone1:

FlexContainerの「Clip Bounds」プロパティは、
子ウィジェットが境界から出たときにはみ出た部分を
クリップ(切り取り)するかどうかを指定します。

今回の場合、
FlexContainer(親)の中に入っているセグメントWidget(子)が
スクロールする(境界から出る)時にクリップするのをOFFにしていたため、
セグメントに表示する部分がヘッダー部分に被さってしまうような動作になっていました。

親WidgetのClip Boundsを有効にすることで、
はみ出た部分をクリップし正常に表示することができるようになりました!

Clip Boundsで解決できる問題については、
こちらでも説明をしていますので併せて確認してみてくださいね:relaxed:

最後に

FlexContainerを使っていて何故か不具合が起きる。。
という時は、Clip Boundsが起因しているかもしれません。

今回の記事を呼んで、
同様の事象に遭遇したら是非試してみてくださいね!

参考

0
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
0
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?