androidでは、レイアウトを非表示にしたい場合はinvisibleを使います。
これとinvisibleを組み合わせることで融通の利くUIを作ることが出来る
便利なやつなのですが、最近になってgoneプロパティの存在と
使い方を知りました。
どんな役割を持っているかというとまずinvisibleは、
レイアウトを見えなくするだけで実際にはそのレイアウトには
存在するのですが、goneはレイアウトそのものを消しています。
つまり消えた領域にはgoneになったレイアウトの
次のレイアウトが表示させることになります。
xmlではこのように記述します。
</pre> <RelativeLayout android:id="@+id/relativeLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" tools:ignore="MissingConstraints"> <ImageView android:id="@+id/image" android:visibility="gone" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:layout_marginStart="80dp" android:layout_marginEnd="80dp" android:src="@drawable/image_icon" /> </RelativeLayout> //この後ろのレイアウトが押し出されて表示される <pre>
今開発しているアプリはimageviewは真ん中
に置いているのですが、普段何もしない場合は表示しないようにしています。
view.invisibleを使うことでimageviewを消すことは
できるのですが、そのimageviewが見えなくなることで
スペースに不自然な空白が生まれ、アプリとしては
かなり不細工な出来になってしまいます。
ここでinvisible以外のプロパティであるgoneを指定すると
imageviewの次のレイアウトが押し込まれて隙間がなくなり
すっきりした見た目にすることができるのです。
ただしデカいandroidで表示させると灰色の余白ができるので
背景色を余白と一緒にするなど工夫も必要になってきます。