Android表格布局格式化问题不适合屏幕

时间:2013-02-20 05:49:05

标签: android android-spinner android-tablelayout

我正在使用带有3列标签的tablelayout,*和spinner,所有这些都有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>

我希望很多人会遇到同样的问题。提前致谢

2 个答案:

答案 0 :(得分:0)

您可以为每个微调器设置maxWidth属性,或者您可以检查字符串的长度,即如果其长度> 1,则将其置于微调器中。 x(比如说10)然后使用substring fn从字符串中只取(x-3)个字符,并用“......”作为后缀,并将该字符串放在spinner中。例如:StringABCDEFGHIJKLM可以成为StringAB...

答案 1 :(得分: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%,而微调器占60%。

您也可以参考:Android Holo theme does not wrap multiple line spinner dropdown items