WindowsPhoneのタイルとして画面サイズに自動的に適応する6つのボタンを備えたレイアウトを作成しようとしています。コードでは、6ボタン、2行を動的に作成しますが、ボタンは後者を埋める画面のサイズに合う必要があります。どうすれば続行できますか?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dip"
Android:orientation="horizontal"
Android:weightSum="2" >
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:background="@drawable/conv_up" />
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:background="@drawable/conv_up"
/>
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dip"
Android:orientation="horizontal"
Android:weightSum="2" >
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:background="@drawable/conv_up"
/>
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:background="@drawable/conv_up"
/>
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dip"
Android:orientation="horizontal"
Android:weightSum="2" >
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:background="@drawable/conv_up"
/>
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:background="@drawable/conv_up"
/>
</LinearLayout>
子と同じ重みの3つの行を持つ垂直LinearLayout
を使用します。各行は、同じ重みの2つの子を持つ水平LinearLayout
であり、領域全体が確実に満たされるようにします。 6つのボタンの場合、パフォーマンスは問題になりません。
パフォーマンスが懸念される場合は、行をRelativeLayout
sとして作成し、支柱を使用して半分に分割し、それに基づいて2つの子を配置できます。
私がstrutと言うとき、私はこれを意味します:
<View Android:id="@+id/strut"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:layout_centerHorizontal="true"/>
更新:LinearLayout
sを試しているので、高さと幅を処理する方法は次のとおりです。
親LinearLayout
は次のものを持つことができます。
Android:layout_width="match_parent"
Android:layout_height="match_parent"
3人のLinearLayout
の子は次のようになります。
Android:layout_width="match_parent"
Android:layout_height="0dip"
Button
sには次のものがあります。
Android:layout_width="0dip"
Android:layout_height="match_parent"
お気づきのように、0dip
ウェイトが適用されるプロパティ(親が垂直方向の場合は高さ、親が水平方向の場合は幅)。スペースを埋めるために拡大する必要があります。
これが完全なXMLです(ボタンにはドローアブルが含まれていないので、自由に追加してください):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dip"
Android:orientation="horizontal"
Android:layout_weight="1" >
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1" />
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dip"
Android:orientation="horizontal"
Android:layout_weight="1" >
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1" />
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dip"
Android:orientation="horizontal"
Android:layout_weight="1" >
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1" />
<Button
Android:layout_width="0dip"
Android:layout_height="match_parent"
Android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
そして結果:
GridView を見てみるべきだと思います
GridLayoutを使用してください!これはこの状況に最適です
<GridLayout
Android:layout_width="match_parent"
Android:layout_height="350dp"
Android:layout_margin="0.5dp"
Android:columnCount="2"
Android:rowCount="3" >
<Button
Android:id="@+id/b_1"
/>
<Button
Android:id="@+id/b_2"
/>
<Button
Android:id="@+id/b_3"
/>
<Button
Android:id="@+id/b_4"
/>
<Button
Android:id="@+id/b_5"
/>
<Button
Android:id="@+id/b_6"
/>
</GridLayout>
Android .v7
ライブラリを使用しています。このxmlは、画面全体に表示される2列3行のレイアウトを作成するために機能しました。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.GridLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/lib/Android.support.v7.widget.GridLayout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
xmlns:grid="http://schemas.Android.com/apk/res-auto"
Android:layout_margin="0.5dp"
app:columnCount="2"
app:rowCount="3"
app:useDefaultMargins="true">
<Button
Android:id="@+id/b_1"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_row="0"
grid:layout_column="0"
Android:text="Hellooo"/>
<Button
Android:id="@+id/b_2"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_row="0"
grid:layout_column="1"
Android:text="Hellooo"/>
<Button
Android:id="@+id/b_3"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_row="1"
grid:layout_column="0"
Android:text="Hellooo"/>
<Button
Android:id="@+id/b_4"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_row="1"
grid:layout_column="1"
Android:text="Hellooo"/>
<Button
Android:id="@+id/b_5"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_row="2"
grid:layout_column="0"
Android:text="Hellooo"/>
<Button
Android:id="@+id/b_6"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_row="2"
grid:layout_column="1"
Android:text="Hellooo"/>
</Android.support.v7.widget.GridLayout>