LoginSignup
14
9

More than 5 years have passed since last update.

Androidのレイアウトでやりがちなこと 〜 FrameLayoutの時に気をつけること

Posted at

Androidアプリの開発初学者が苦戦することのひとつに挙がるのは、やはりレイアウトだと思います。思ったところにボタンが行かなかったり、クシャッと潰れてしまったり……。

ここでは、開発しながらわかってきたことをまとめようと思います。
特に、今回は、FrameLayoutを使用するときに気をつけることをまとめます。

  • 画面やレイアウトのサイズと、配置するUIのサイズ
  • layout-gravityとgravity
  • marginとpadding

また、今回の内容で参考になった資料がこちらです。
SlideShare | 【第4回】デザイナーがコードから読み解く、Androidアプリのデザインの幅を広げるコツとTips

画面やレイアウトのサイズと、配置するUIのサイズ

FrameLayoutは、UIを重ねて配置することのできる便利なレイアウトです。このレイアウトで特に気をつけなければいけないのが、FrameLayoutの持っているサイズと、配置するUIのサイズです。

FrameLayoutは基本的に、フレームの中の指定した場所にUIを置くだけです。LinearLayoutのように、UIのサイズを調整することはしてもらえません。つまり、フレームの幅の半分以上の幅を持ったUIを2つ横並びに配置すると、UI同士が重なり、みっともないことになります(テキストがダブって表示される、ボタンの一部が隠れるなど)。高さ方向についても、同様です。

これが顕著に感じられるのは、画面の向きを縦や横にした時。一方のレイアウトを定義しない場合は、向きを変えてUIが重ならないかをチェックすることをおすすめします。

layout-gravityとgravity

これはどのレイアウトにも共通することですが、layout-gravityとgravityを適切に設定することです。

レイアウトで指定できるパラメータに、「layout-」から始まるものがあります。これは、「配置先のレイアウトに対して」という意味合いがあります。

たとえば、layout-gravityをrightに設定すると、
配置された先のレイアウトに右寄せでUIが配置されます。幅をもったTextViewを配置した場合、左から文字が始まるので、画面の中途半場な位置からテキストが始まったりします。

一方、gravityは、「自分の持っているViewに対して」設定するgravityです。たとえば、Layoutにgravityをrightで設定すると、その中にある全てのUIに対して、右寄せを設定することができます。幅を持ったTextViewにgravityをrightに設定すると、文字が右寄せになります。

marginとpadding

余白という意味では、marginもpaddingも同じなのですが、それぞれ用途は異なります。

marginは、自分以外の他のViewに対しての余白。
paddingは、自身のコンテンツに設定する余白。

同じ余白なのですが、他のViewを離れさせるか、自分を小さくするか、意味は異なります。

おわりに

後半2つは他のレイアウトにも共通する話題でしたが、私がFrameLayoutを使う際に気をつけるようになったことは以上です。FrameLayoutは、使い方がわかると、つい多用してしまいがちです。用途に応じて、適切なレイアウトを選ぶようにしたいですね。

14
9
1

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
14
9