0

我正在使用带有 3 列标签、* 和微调器的表格布局,所有这些都有 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>

权重表示要占据的屏幕百分比。所以每个 textViews 将占据屏幕的 20%,而 spinner 将占据 60%。

您也可以参考:Android Holo 主题不包含多行微调器下拉项

于 2013-02-20T07:18:58.040 回答
0

您可以maxWidth为每个微调器设置属性,也可以检查要放置在微调器中的字符串的长度,以防它的长度 > x(比如 10)然后使用子字符串 fn 从字符串中仅获取 (x-3) 个字符并以“...”作为后缀并将该字符串放入微调器中。例如:StringABCDEFGHIJKLM可以成为StringAB...

于 2013-02-20T06:08:33.487 回答