Spinner を GridLayout に追加すると、レイアウトが「壊れる」ようです。この問題を説明するために、最小限の実例を用意しました。
左側にラベルがあり、右側に入力コントロールがあるグリッドが必要です。右側のコントロールが残りのスペースを占めます。簡単な例は次のようになります。
入力コントロールの 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>