13

2 つの列と 2 つの行を持つ tableLayout があります。行と最後の列の両方に幅の match_parent がありますが、レイアウトは親の幅を埋めていません。

コードは次のとおりです。

<TableLayout android:layout_width="match_parent">
    <TableRow android:layout_width="match_parent">
        <TextView 
            android:layout_width="wrap_content"
            android:text="static" />
        <EditText
            android:layout_width="match_parent"
            android:text="text" />
    </TableRow>

    <TableRow android:layout_width="match_parent">
        <TextView 
            android:layout_width="wrap_content"
            android:text="static2" />
        <EditText
            android:layout_width="match_parent"
            android:text="text2" />
    </TableRow>
</TableLayout>

親の幅を持つ各行に対して何をする必要がありますか?

Ps: 私が働いている場所では自分のコードを投稿することが許可されていないため、できるだけ自分のコードに近いコードを書きます。正しいかどうかはわかりません。テストできません。

4

3 に答える 3

2

また、重み属性がうまく機能しないため、TextView を含む他の行よりもコンテンツの幅が広い他の行があるかどうかも検討してください。次の例を検討してください。

<?xml version="1.0" encoding="utf-8"?>
<TableLayout 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" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="Short Text" />

              <EditText
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content" />

    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Short Text"
            android:layout_weight="1"/>

        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Reaaaaaaaaaaaaaaaaaaaaaaaaaally lengthy and text"/>

    </TableRow>

これが結果です。

  • 3 行目のセルは、すべての左側のセル幅を設定しています。
  • 最初の行の EditText は、左のセルが終了する位置から始まります (画面幅のほぼ 4 分の 3 の位置)。
  • 2 行目はセルごとに 1 の重みが与えられているため、行の両方のセルは画面の半分を測定する必要がありますが、最初のセルは幅が広いため、重みは比例して計算されるため、右側に 50 の重みを設定しても最初のセルは 3 番目のセルのコンテンツよりも小さくすることはできないため、画面の半分が表示されることはありません。
于 2014-11-10T14:18:44.283 に答える