× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
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" > ================================================================ LinearLayoutLinearLayout自体への指定。リファレンス 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"として説明する 各オブジェクトについて
という感じで指定する。高さを0dpに明示的に指定することが必須。 なぜ0dpにするかというと、layout_weightは、余白部分の重み付け分割をしている。コンテナ内にwrap_contentとか30dpとかで高さを指定したオブジェクトがあると、それが優先して配置され、残った高さ分をlayout_weightで分割する。 だから、オブジェクトを全部layout_weightで分割したいときは、全部のオブジェクトの高さを0dpにしておくことになる。 参考
こんな感じで配置される。ImageViewの場合、画像サイズ自体は変化せず、ビューの範囲が調整される。
imageView2がlayout_height="wrap_content"になっているので、それが優先される。残った余白をlayout_weightで分割している(この場合はimageView2しかないので、余白を全部まるまる使って表示している) だからlayout_height="match_parent"を指定しているものがあると、layout_weight指定している物はいっさい表示されなくなる。(余白が0になるから)
LinearLayoutに android:weightSum="100" を指定すると、全体のweightの指定になる。各オブジェクトのweightの合計より大きい値をセットすれば、余白が作れる。小さい値をセットすれば、オブジェクトが見切れる。 注意!LinearLayout自体が layout_height="wrap_content"だと、このweightの指定は効かなくなる。
LinearLayout自体がwrap_contentだと、そもそも余白が作られないから分割しようがない、ということかと思われる。 PR |
|