以下は、LAND for XML形式の一部です。
<TableLayout
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:layout_gravity="center"
Android:stretchColumns="*">
<TableRow>
<Button
Android:id="@+id/countbutton"
Android:text="@string/plus1"/>
<Button
Android:id="@+id/resetbutton"
Android:text="@string/reset"
/>
</TableRow>
</TableLayout>
そして今私が得ないもの-1行とボタンの幅はボタン内のテキストに依存します。両方のテキストが等しい場合は、次のように言います。TEXT ok-テーブルの半分は画面の中央にあります。ただし、サイズが異なる場合は、「A」と「THIS IS THE LONG BUTTON」と言いましょう。テーブルの中央が画面の中央にないため、ボタンの幅が等しくありません。 ...
ボタンが同じサイズの行にボタンを配置するには、実行する必要があります。
<LinearLayout Android:orientation="horizontal"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<Button Android:layout_weight="1"
Android:layout_height="wrap_content"
Android:layout_width="0dip"/>
<Button Android:layout_weight="1"
Android:layout_height="wrap_content"
Android:layout_width="0dip"/>
</LinearLayout>
ボタンのその他のxmlプロパティを入力します。
魔法は、layout_weightプロパティとwidthプロパティにあります。テーブルレイアウトは必要ありません。これらのプロパティは、ビューが親レイアウトで等しいスペースを占める必要があることをレイアウトに伝えます。
承認された回答に加えて:
同様の問題があり、列幅が等しいグリッドに複数の画像が必要なため、テーブルレイアウトを使用しました。これは機能しましたが、画像が非同期で読み込まれるため、すべての列に少なくとも1つの画像が含まれるまで、対応する列が幅全体を占めていました。
Robby Pondのソリューションを使用してこれを解決しましたが、最後の行では機能しませんでした。必ずしも他の行と同じ数の画像を持っているわけではなく、それらの画像を拡大して、上記と同じ列。これに対処するために、その行の残りの空の列を通常のViewオブジェクトで埋めました。
他のすべての画像と同じレイアウトパラメータを使用:
width = 0, weight = 1.
そしてそれで解決しました!
良い例(元は http://androidadvice.blogspot.com/2010/10/tablelayout-columns-equal-width.html から)
テスト済み、動作中:
<TableRow>
<!-- Column 1 -->
<TextView
Android:id="@+id/tbl_txt1"
Android:layout_width="0dip"
Android:layout_height="wrap_content"
Android:background="@color/red"
Android:textColor="@color/white"
Android:padding="10dip"
Android:layout_margin="4dip"
Android:layout_weight="1"
Android:text="Column 1" />
<!-- Column 2 -->
<TextView
Android:id="@+id/tbl_txt2"
Android:layout_width="0dip"
Android:layout_height="wrap_content"
Android:background="@color/red"
Android:textColor="@color/white"
Android:padding="10dip"
Android:layout_margin="4dip"
Android:layout_weight="1"
Android:text="Column 2" />
<!-- Column 3 -->
<TextView
Android:id="@+id/tbl_txt3"
Android:layout_width="0dip"
Android:layout_height="wrap_content"
Android:background="@color/red"
Android:textColor="@color/white"
Android:padding="10dip"
Android:layout_margin="4dip"
Android:layout_weight="1"
Android:text="Column 3" />
</TableRow>
レイアウトスニペット
<TableLayout
Android:id="@+id/tablelayout"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
プログラムでテーブルのボタンのレイアウトプロパティを設定するコード:
public void addButtons(View view) {
TableLayout tableLayout = (TableLayout) findViewById(R.id.tablelayout);
Context context = getApplicationContext();
tableLayout.removeAllViews();
for (int rowIndex = 0; rowIndex < ROWS; rowIndex++) {
TableRow row = new TableRow(context);
for (int columnIndex = 0; columnIndex < COLUMNS; columnIndex++) {
Button btn = new Button(context);
LayoutParams buttonParams = new LayoutParams(0,
LayoutParams.WRAP_CONTENT, 1f);
btn.setLayoutParams(buttonParams);
row.addView(btn);
}
tableLayout.addView(row);
}
}
これを試してください:テスト済みで動作しています:
1)For tablelayout set Android:stretchColumns = "1"
2)各アイテム(列)も設定layout_width = "0dip" and layout_weight = "1"
3)tablerowのlayout_widthを設定しないでください
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools" Android:layout_width="match_parent"
Android:layout_height="match_parent" Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
Android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="inext.smartshop.CustomerProfile.CustomerProfileView">
<RelativeLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/tablelayout"
Android:stretchColumns="1"
Android:layout_above="@+id/userProfilebtnsignout"
Android:layout_alignParentLeft="true"
Android:layout_alignParentStart="true"
Android:layout_alignParentRight="true"
Android:layout_alignParentEnd="true"
Android:layout_below="@+id/relativeLayout">
<TableRow
Android:layout_height="fill_parent"
Android:padding="5dp"
Android:id="@+id/detailsTableRow"
Android:gravity="center_horizontal">
<TextView
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:text="Full Name : "
Android:layout_width="0dip"
Android:layout_weight="1"
Android:id="@+id/textView8"
Android:gravity="right" />
<TextView
Android:layout_width="0dip"
Android:layout_weight="1"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:text="Ram Chhabra"
Android:id="@+id/userProfilename"
Android:gravity="left" />
</TableRow>
<TableRow Android:padding="5dp"
Android:layout_height="wrap_content">
<TextView
Android:layout_width="0dip"
Android:layout_weight="1"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:text="Email Address : "
Android:id="@+id/textView10"
Android:gravity="right" />
<TextView
Android:layout_width="0dip"
Android:layout_weight="1"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:text="[email protected]"
Android:id="@+id/userProfileemail"
Android:gravity="left"
/>
</TableRow>
<TableRow Android:padding="5dp">
<TextView
Android:layout_width="0dip"
Android:layout_weight="1"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:text="Contact No 1 : "
Android:id="@+id/textView12"
Android:gravity="right" />
<TextView
Android:layout_width="0dip"
Android:layout_weight="1"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:text="8130032232"
Android:id="@+id/userProfilecontactone"
/>
</TableRow>
</TableLayout>
</RelativeLayout>
</RelativeLayout>