忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/23 06:50 】 |
LinearLayout
LinearLayout
縦か横に単に並べるレイアウトグループ。

Eclipse上のGraphical Layoutで追加すると、以下のようにXMLが生成される。
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="127dp"
android:orientation="vertical" >

================================================================

LinearLayout

LinearLayout自体への指定。
リファレンス

orientation
並べる向き。horizontal か vertical

gravity
配置位置
fill デフォルト。内部に配置するオブジェクトの幅・高さをコンテナに合わせる
top 上に寄せる(オブジェクトのサイズはそのまま)。bottom,left,rightも同様
center 中央に寄せる(サイズはそのまま)
center_vertical 上下位置の中央に寄せる(サイズはそのまま)center_horizontalも同様
fill_vertical 上下をコンテナサイズに合わせる。らしいがどうも効かないようだ。fill_horizontalも同様


デフォルト(fill)。左上寄せになる


android:gravity="right"


android:gravity="right|bottom" パイプで繋いで複数指定可能


android:gravity="center"



baselineAligned
内部のオブジェクトのベースラインを揃える。
ベースライン…テキストのベースラインのことのようだ。


================================================================

LinearLayout.LayoutParams

リファレンス
LinearLayoutコンテナ内のオブジェクトへの指定に使う要素。

layout_gravity
配置方向。gravityと同じく、top,left,right,bottomなど。
ただし、orientation="horizontal" のときはtop,bottom、orientation="vertical"のときはleft,rightしか効かない。

また、fill_系はなぜか使えないようだ。その場合は、layout_width="match_parent"またはlayout_height="match_parent"とすると横幅(縦幅)いっぱいに広がる。
(内部にImageViewを置き、android:scaleType="fitXY"にしても結局fill_horizontalは効かなかった)


layout_weight
比率を指定して配置できる。以下、android:orientation="vertical"として説明する
各オブジェクトについて

android:layout_height="0dp"
android:layout_weight="10"





という感じで指定する。高さを0dpに明示的に指定することが必須。
なぜ0dpにするかというと、layout_weightは、余白部分の重み付け分割をしている。コンテナ内にwrap_contentとか30dpとかで高さを指定したオブジェクトがあると、それが優先して配置され、残った高さ分をlayout_weightで分割する。
だから、オブジェクトを全部layout_weightで分割したいときは、全部のオブジェクトの高さを0dpにしておくことになる。
参考



<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:background="#ff0"
android:orientation="vertical"
>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />







こんな感じで配置される。ImageViewの場合、画像サイズ自体は変化せず、ビューの範囲が調整される。




<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:background="#ff0"
android:orientation="vertical"
>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />







imageView2がlayout_height="wrap_content"になっているので、それが優先される。残った余白をlayout_weightで分割している(この場合はimageView2しかないので、余白を全部まるまる使って表示している)
だからlayout_height="match_parent"を指定しているものがあると、layout_weight指定している物はいっさい表示されなくなる。(余白が0になるから)





<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:background="#ff0"
android:orientation="vertical"
android:weightSum="100" <!--- 注目!!!!!!! -->
>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />







LinearLayoutに android:weightSum="100" を指定すると、全体のweightの指定になる。各オブジェクトのweightの合計より大きい値をセットすれば、余白が作れる。小さい値をセットすれば、オブジェクトが見切れる。




注意!LinearLayout自体が layout_height="wrap_content"だと、このweightの指定は効かなくなる。


<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="#ff0"
android:orientation="vertical"
>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />









LinearLayout自体がwrap_contentだと、そもそも余白が作られないから分割しようがない、ということかと思われる。



PR
【2014/08/28 19:44 】 | Android | 有り難いご意見(0)
<<RelativeLayout | ホーム | layoutをマスターする>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>