8

Spinner を GridLayout に追加すると、レイアウトが「壊れる」ようです。この問題を説明するために、最小限の実例を用意しました。

左側にラベルがあり、右側に入力コントロールがあるグリッドが必要です。右側のコントロールが残りのスペースを占めます。簡単な例は次のようになります。

EditTexts を使用したグリッド

入力コントロールの 1 つをスピナーに置き換えると、右側の列が画面の境界からはみ出し、見苦しいレイアウトになります。

スピナー付きグリッド

なぜこれが起こるのですか?どうすれば回避できますか?


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

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="2" >

    <TextView
        android:layout_gravity="left"
        android:text="TextView" />

    <EditText
        android:layout_gravity="fill_horizontal"
        android:hint="EditText" />

    <TextView
        android:layout_gravity="left"
        android:text="TextView" />

    <EditText
        android:layout_gravity="fill_horizontal"
        android:hint="EditText" />

</GridLayout>

そして、これが2番目の画像のコードです。唯一の違いは、最初の EditText が Spinner に置き換えられたことです。

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="2" >

    <TextView
        android:layout_gravity="left"
        android:text="TextView" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_gravity="fill_horizontal" />

    <TextView
        android:layout_gravity="left"
        android:text="TextView" />

    <EditText
        android:layout_gravity="fill_horizontal"
        android:hint="EditText" />

</GridLayout>
4

2 に答える 2

16

layout_widthどうやら、スピナーの をゼロに設定することで問題を回避できるようです。

<Spinner 
    android:id="@+id/Spinner1"
    android:layout_gravity="fill_horizontal"
    android:layout_width="0dp" />

問題を簡単に修正できるため、これを受け入れられた回答としてマークしますが、誰かがこの動作の説明を思い付くことができれば、喜んで変更します。

于 2012-11-14T14:15:29.973 に答える
1
try this code

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

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

        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

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

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:hint="EditText" />
    </TableRow>

</TableLayout>
于 2012-11-14T10:23:35.813 に答える