次のレイアウトが用意されています
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical" Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<LinearLayout Android:orientation="vertical"
Android:layout_width="fill_parent" Android:layout_height="fill_parent"
Android:layout_weight="1">
<WebView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/webview" Android:layout_width="fill_parent"
Android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout Android:orientation="horizontal" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:layout_weight="13">
<LinearLayout Android:id="@+id/LinearLayout01" Android:layout_width="wrap_content" Android:layout_height="wrap_content">
<LinearLayout Android:orientation="horizontal" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:layout_weight="1">
<ImageButton Android:background="@null" Android:id="@+id/back" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:src="@drawable/back" Android:padding="10dip" />
</LinearLayout>
<LinearLayout Android:orientation="horizontal" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:layout_weight="1">
<ImageButton Android:background="@null" Android:id="@+id/forward" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:src="@drawable/forward" Android:padding="10dip" />
</LinearLayout>
</LinearLayout>
<RelativeLayout Android:orientation="horizontal" Android:layout_width="wrap_content" Android:layout_height="fill_parent" Android:layout_weight="1" >
<ImageButton Android:background="@null" Android:id="@+id/special" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:src="@drawable/barcode" Android:padding="10dip" Android:layout_gravity="right"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
この質問の目的のために、私はレイアウトの下半分のみを心配しています。現在、3つの画像ボタンが含まれています。最初の2つは、左に揃えて隣同士に並べたいです。 3番目は、右側に揃えたいです。
現状では、最初の2つのボタンは私が望む場所にありますが、3番目のボタンはずんぐり左揃えのままです。どのように正しく整列させますか?.
レイアウトは非常に非効率的で肥大化しています。それほど多くのLinearLayout
sは必要ありません。実際、LinearLayout
はまったく必要ありません。
RelativeLayout
を1つだけ使用します。このような。
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content">
<ImageButton Android:background="@null"
Android:id="@+id/back"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/back"
Android:padding="10dip"
Android:layout_alignParentLeft="true"/>
<ImageButton Android:background="@null"
Android:id="@+id/forward"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/forward"
Android:padding="10dip"
Android:layout_toRightOf="@id/back"/>
<ImageButton Android:background="@null"
Android:id="@+id/special"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/barcode"
Android:padding="10dip"
Android:layout_alignParentRight="true"/>
</RelativeLayout>
RelativeLayout
を1つ使用するだけで、すべてを実行できます(ただし、Android:orientation
パラメーターは不要です)。そのため、LinearLayout
に多数のものを含める代わりに、次のようなことができます。
<RelativeLayout>
<ImageButton
Android:layout_width="wrap_content"
Android:id="@+id/the_first_one"
Android:layout_alignParentLeft="true"/>
<ImageButton
Android:layout_width="wrap_content"
Android:layout_toRightOf="@+id/the_first_one"/>
<ImageButton
Android:layout_width="wrap_content"
Android:layout_alignParentRight="true"/>
</RelativeLayout>
お気づきのように、いくつかのXMLパラメーターが欠落しています。私はあなたが置かなければならない基本的なパラメーターを示していました。残りは完了できます。
LinearLayout を使用したい場合は、layout_weight
とSpace
要素を使用して位置合わせを行うことができます。
例えば。次のレイアウトでは、textView
とtextView2
が隣り合って配置され、textView3
は右揃えになります
<LinearLayout
Android:orientation="horizontal"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:text="Medium Text"
Android:id="@+id/textView" />
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:text="Medium Text"
Android:id="@+id/textView2" />
<Space
Android:layout_width="0dp"
Android:layout_weight="1"
Android:layout_height="20dp" />
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:text="Medium Text"
Android:id="@+id/textView3" />
</LinearLayout>
layout_weight
をtextView2
に設定する場合、Space
なしでも同じ効果を得ることができます。物事がより分離されており、Space
要素を示すことが好きなだけです。
<TextView
Android:layout_width="0dp"
Android:layout_weight="1"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:text="Medium Text"
Android:id="@+id/textView2" />
設定する必要はありませんlayout_width
は、その重量に応じて再計算されるため、明示的に注意してください(垂直LinearLayout
の要素に高さを設定する方法と同じです) 。その他のレイアウトパフォーマンスのヒントについては、 Android Layout Tricks seriesをご覧ください。
これはRelativeLayoutの例です:
RelativeLayout relativeLayout=(RelativeLayout)vi.findViewById(R.id.RelativeLayoutLeft);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)relativeLayout.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
relativeLayout.setLayoutParams(params);
別の種類のレイアウト(LinearLayoutの例)では、単にRelativeLayoutforLinearLayout。
古いバージョンをサポートするには、以下のようにスペースをビューに置き換えることができます。このビューを、左端のコンポーネントの後から右端のコンポーネントの前に追加します。 weight = 1のこのビューは、空間を引き伸ばして埋めます
<View
Android:layout_width="0dp"
Android:layout_height="20dp"
Android:layout_weight="1" />
完全なサンプルコードをここに示します。 4つのコンポーネントがあります。左右に2つの矢印があります。テキストとスピナーは中央にあります。
<ImageButton
Android:id="@+id/btnGenesis"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center|center_vertical"
Android:layout_marginBottom="2dp"
Android:layout_marginLeft="0dp"
Android:layout_marginTop="2dp"
Android:background="@null"
Android:gravity="left"
Android:src="@drawable/prev" />
<View
Android:layout_width="0dp"
Android:layout_height="20dp"
Android:layout_weight="1" />
<TextView
Android:id="@+id/lblVerseHeading"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:gravity="center"
Android:textSize="25sp" />
<Spinner
Android:id="@+id/spinnerVerses"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginLeft="5dp"
Android:gravity="center"
Android:textSize="25sp" />
<View
Android:layout_width="0dp"
Android:layout_height="20dp"
Android:layout_weight="1" />
<ImageButton
Android:id="@+id/btnExodus"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center|center_vertical"
Android:layout_marginBottom="2dp"
Android:layout_marginLeft="0dp"
Android:layout_marginTop="2dp"
Android:background="@null"
Android:gravity="right"
Android:src="@drawable/next" />
</LinearLayout>