これは、Androidでの最初のステップから私を困惑させます。 2列のTableLayoutの両方の列をそれぞれ正確に50%にすることはできません。
以下に例を示します。
<ScrollView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent" >
<TableLayout
Android:id="@+id/tablelayout"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:paddingRight="2dip" >
<TableRow>
<TextView
style="@style/TextViewStandard"
Android_layout_span="2"
Android:layout_weight="1"
Android:text="Bla" />
</TableRow>
<TableRow>
<TextView
style="@style/TextViewStandard"
Android:layout_weight="1"
Android:text="Name:" />
<EditText
style="@style/EditTextStandard"
Android:id="@+id/et_name"
Android:layout_weight="1" />
</TableRow>
<TableRow>
<TextView
style="@style/TextViewStandard"
Android:layout_weight="1"
Android:text="URL:" />
<EditText
style="@style/EditTextStandard"
Android:id="@+id/et_url"
Android:layout_weight="1" />
</TableRow>
<TableRow>
<Button
style="@style/ButtonStandard"
Android:layout_column="0"
Android:layout_marginTop="6dip"
Android:onClick="onClickOk"
Android:text="@Android:string/ok" />
</TableRow>
</TableLayout>
</ScrollView>
そして、対応するスタイル定義は次のとおりです。
<resources>
<style name="ButtonStandard" parent="@Android:style/Widget.Button">
<item name="Android:layout_height">wrap_content</item>
<item name="Android:layout_width">fill_parent</item>
</style>
<style name="EditTextStandard" parent="@Android:style/Widget.EditText">
<item name="Android:layout_height">wrap_content</item>
<item name="Android:layout_marginLeft">2dip</item>
<item name="Android:layout_marginRight">2dip</item>
<item name="Android:layout_marginTop">2dip</item>
<item name="Android:layout_width">fill_parent</item>
</style>
<style name="TextViewStandard" parent="@Android:style/Widget.TextView">
<item name="Android:layout_height">wrap_content</item>
<item name="Android:layout_marginLeft">2dip</item>
<item name="Android:layout_marginRight">2dip</item>
<item name="Android:layout_marginTop">2dip</item>
<item name="Android:layout_width">fill_parent</item>
<item name="Android:textColor">@Android:color/white</item>
</style>
</resources>
これは、関連するCheckBoxで本当に台無しになります。
私の定義の何が問題になっていますか?
事前に感謝します。 HJW
子ビューでAndroid:layout_width
属性を0dp
に設定しようとしました(もちろん、Android:layout_weight
を1
として保持します)。
与えられたスペースを2つの子ビュー間で均等に分配したいと思ったときも同様のシナリオでしたが、「より広いコンテンツ」を持つ子もその親内で兄弟よりも広くなったため、そうしませんでした。これは、幅の広い子ほど初期幅が大きいためです。両方の子が同じ幅(両方のAndroid:layout_width="0dp"
)から開始することを確認すると、それらの間でスペースが均等に分配されることも保証されます。
これは、テーブルを均等にフォーマットする方法です。あなたの質問の一部ではありませんが、Android:layout_column属性を含まない他のTableRowの子のすべての列Android:layout_span = "2"にまたがります。お役に立てれば。
<TableLayout
Android:id="@+id/tableLayout1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:stretchColumns="0,1">
<TableRow
Android:id="@+id/tableRow1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content">
<TextView
Android:id="@+id/textView1"
Android:layout_column="0">
</TextView>
<TextView
Android:id="@+id/textView2"
Android:layout_column="1">
</TextView>
</TableRow>
</TableLayout>
コントロールを保持するフレームレイアウト内にテーブルレイアウトを作成します。この例では、2列のレイアウトがあり、各列の中央に2つのImageViewを配置します。
<TableLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:stretchColumns="1">
<TableRow>
<FrameLayout
Android:layout_height="wrap_content"
Android:layout_width="0dp"
Android:layout_weight="1">
<ImageView Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/button_wedding_day_cheat_sheet"
Android:id="@+id/buttonWeddingDayCheatSheet"
Android:onClick="onClickWeddingDayCheatSheet"
Android:layout_gravity="center_horizontal">
</ImageView>
</FrameLayout>
<FrameLayout
Android:layout_height="wrap_content"
Android:layout_width="0dp"
Android:layout_weight="1">
<ImageView Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/button_share_favorite_recipe"
Android:id="@+id/buttonShareFavoriteRecipe"
Android:onClick="onClickShareFavoriteRecipe"
Android:layout_gravity="center_horizontal">
</ImageView>
</FrameLayout>
</TableRow>
</TableLayout>
Androidテーブルの列は、どの行でも最も広いビューに常に適合します。列の明示的なコントロールはありません。グリッドビューでは、次のような列サイズをより詳細に制御できます。 columnWidth = "100dp"
テーブルの左と右のビューが同じサイズに設定される場合、中央のテーブルには2つの50%間隔の列があります。