0

私は3列のラベル、*、スピナーでtablelayoutを使用しています。これらにはすべてwrap_contentがあり、スピナーテキストが小さい場合は正常に機能します。いずれかのスピナーのテキストが非常に長い場合、すべてのスピナーが最後まで拡張され、画面に収まりません。

tablelayout内のwrap_contentのように、各スピナーをテキストサイズに合わせる方法はありますか? テーブル レイアウト サンプルの xml。

    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:stretchColumns="2" >
      <TableRow>

            <TextView
                android:layout_width="wrap_content"
                android:layout_column="0"
                android:gravity="right"
                android:paddingLeft="3dip"
                android:text="Sold To"
                android:textColor="#000033"
                android:textSize="17sp" />

            <TextView
                android:layout_column="1"
                android:gravity="left"
                android:text="*"
                android:textColor="#FF0000"
                android:textSize="17sp"
                android:width="20dip" />

            <Spinner
                android:id="@+id/sold_to_dd"
                android:layout_width="wrap_content"
                android:layout_column="2"
                 />
        </TableRow>


    </TableLayout>

多くの人が同じ問題に遭遇したことを願っています。前もって感謝します

4

2 に答える 2

0

これは、スピナーである列 2 のみをストレッチしているためです。各列に重みを設定する必要があります。何かのようなもの

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#FFFFFF" >
  <TableRow>

        <TextView
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:layout_column="0"
            android:gravity="right"
            android:paddingLeft="3dip"
            android:text="Sold To"
            android:textColor="#000033"
            android:textSize="17sp" />

        <TextView
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:layout_column="1"
            android:gravity="left"
            android:text="*"
            android:textColor="#FF0000"
            android:textSize="17sp" />

        <Spinner
            android:id="@+id/sold_to_dd"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:layout_column="2"
            android:singleLine="true"
             />
    </TableRow>


</TableLayout>

重みは、占有する画面の割合を示します。したがって、各 textView は画面の 20% を占め、スピナーは 60% を占めます。

これを参照することもできます: Android Holo theme does not wrap multiple line spinner dropdown items

于 2013-02-20T07:18:58.040 に答える
0

各スピナーの属性を設定するかmaxWidth、文字列の長さを確認することができます。つまり、長さ > x (10 など) の場合にスピナーに配置されます。次に、部分文字列 fn を使用して、文字列から (x-3) 文字のみを取得します。末尾に「...」を付けて、その文字列をスピナーに配置します。例:StringABCDEFGHIJKLMになることができStringAB...ます。

于 2013-02-20T06:08:33.487 に答える