2011-01-11 63 views
3

我在Android布局问题上遇到了一些困难。我正在尝试为用户填写表单。这个表单是以编程的方式定义的(从我无法控制的服务器提供的配置),因此我必须以编程方式实现它。表单有几种不同的字段类型,但为了简单起见,我们可以假定它们都是简单的文本字段(EditText)。长标签的布局表格

我目前有一个实现为垂直LinearLayout的形式。对于每个字段,我都有一个水平的LinearLayout,它包含一个字段标签的TextView和一个EditText,供用户输入该字段的值。我将EditText设置为使用LinearLayout.LayoutParams(FILL_PARENT,WRAP_CONTENT)填充宽度。

这很适用于TextView标签很短的情况,但是当它很长时,它会导致EditText非常小,并且使用户难以输入值。理想情况下,我希望EditText至少为屏幕宽度的一半,并在必要时包装TextView标签。我已经尝试TableLayout与TableRows,但我仍然有困难。我也宁愿不强制使用网格,因此会浪费标签较短的线条上的空间(假设其他要求已满足,我对此很灵活)。我会尝试类似于FlowLayout来强制EditText换行到下一行,但它不支持Android。

有关如何使这项工作更好的建议?基于XML的解决方案将被接受,假设我可以将它们移植到程序化方法。我也希望尽可能在屏幕尺寸和方向上灵活,因此这意味着避免对任何宽度进行硬编码。

在此先感谢。

+1

您是否尝试过使用布局权重?您应该能够告诉您的两个项目分别占据屏幕的一半,例如,通过为两者设置width = 0和layout_weight = 1。 – 2011-01-11 02:49:47

+1

我的确尝试过与权重相混淆,但我不知道width = 0的技巧。我一直在搞fill/match_parent和wrap_content。它确实可以防止EditText用一个简短的标签占据额外的空间,但它足够满足我的目的。谢谢! – 2011-01-11 17:58:39

回答

1

尝试使用布局权重。您应该能够告诉您的两个项目分别占据屏幕的一半,例如,通过为两者设置width = 0和layout_weight = 1。