■XMLでリニアレイアウト
リニアレイアウトは縦向き、もしくは横向きに順番に表示していくレイアウトです。
レイアウトには色々な種類がありますが、よく使うのを書いときます
●FrameLayout(Viewを重ねあわせて配置)
●LinearLayout(Viewを縦もしくは横の一方向に順番に配置)
●RelativeLayout(View同士の位置関係から相対的に配置)
javaのコードで書きたかったのですが、色々試してもうまくいきませんでした。
XXX.setLayoutParams(new android.widget.LinearLayout.LayoutParams(
android.widget.LinearLayout.LayoutParams.MATCH_PARENT,
android.widget.LinearLayout.LayoutParams.MATCH_PARENT));
XXX.setOrientation(android.widget.LinearLayout.VERTICAL);
XXX.addView(tv,new android.view.ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT
,android.view.ViewGroup.LayoutParams.MATCH_PARENT));
XXX.setGravity(android.view.Gravity.BOTTOM);
javaでリニアレイアウト
とかやってみたのですが、なぜか目的のレイアウトになりません。
諦めてXMLで表現することにします。
まずは、XMLによく使いそうな文から。
android:orientation="vertical"
horizontal 横向き
vertical 縦向き
android:layout_width="match_parent"
match_parent いっぱいに広がる
wrap_content サイズを自動調整
1000dp サイズ指定
android:gravity="center"
center 真ん中に
center_vertical 縦の真ん中に
center_horizontal 横の真ん中に
center|bottom 真ん中の下に
center|top 真ん中の上に
right|bottom 右側の下に
left|bottom 左側の下に
fill いっぱいに広がる
fill_vertical 高さをいっぱいに広げる
fill_horizontal 横幅をいっぱいに広げる
■リニアレイアウトにボタンを並べてみます。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3" />
</LinearLayout>
orientation="horizontal"のため、横向きに並んでいます、また、layout_weight="3" の違いにより幅が変化しています。
■リニアレイアウトに縦向きで並べてみる
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3" />
</LinearLayout>
orientation="vertical"のため、縦向きに並んでいます。
またlayout_weight="3" の違いにより高さが変化しています。
■layout_weightの大きさを変えてみる
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
layout_weightの値の違いにより高さが変化しています。
■縦向きリニアレイアウトの中に横向きリニアレイアウトを入れる
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="fill"
android:layout_weight="1" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="0">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
画面一番下に横向きリニアレイアウトを入れました。
gravity="center"のため、ボタンがセンターに配置されています。
■一番下にボタンを配置する
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="0">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
一番下のリニアレイアウトにボタンを3個並べてみました。
一番下にボタンを並べて操作するのに使えそうですね。
あと、各々のパーツにIDを与えておくとjavaから操作できます。
ていうか、IDを与えておかないと取得できませんね。
android:id="@+id/button2"
▲トップページ
>
android