我正在使用带有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>
我希望很多人会遇到同样的问题。提前致谢
答案 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