我有一个TableLayout,其中有三列代表带有
的表单requiredSymbol |标签| inputfield。
我希望输入字段将屏幕的剩余宽度填充到标签上。到目前为止,我找到的唯一解决方案是
<TableLayout android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:stretchColumns="2">
<TableRow>
<TextView android:text="@string/requiredSymbol"
/>
<TextView android:text="@string/Name"
android:textColor="@color/orange"
android:gravity="left|center_vertical"
/>
<EditText android:id="@+id/contactName"
android:inputType="text|textPersonName"
android:ellipsize="end"
android:singleLine="true"
android:scrollHorizontally="true"
android:maxWidth="1sp"
/>
</TableRow>
maxWidth需要有一些值,实际上是被忽略的。然后,stretchColumns值可以很好地完成它的工作。请注意,如果EditText的内容会使表跨越屏幕边框(imho a bug ..),这也有效。
现在这很好用,但对我来说似乎有点黑客。还有更好的方法吗?
答案 0 :(得分:2)
尝试在列上使用android:layout_weight,但请确保在TableLayout中设置android:stretchColumns。我遇到过TableLayout单方面决定缩小列导致不需要的文本换行的问题。我不确定layout_weight和单边列缩小的使用是否相关。
答案 1 :(得分:0)
似乎在这个使用静态xml文件的阶段没有更好的方法。但是我已经将布局更改为没有单独的列所需的标签/图标,并将其更改为使用EditText #setError消息以及每个字段上的TextWatcher实现,无论如何都要好得多。
答案 2 :(得分:0)
我实现此目的的方法是在将width
字段添加到宽度为EditText
的布局后获取FILL_PARENT
字段,然后使用该字段设置{{1} }}
看起来像这样:
MaxWidth
不是我最喜欢的方式,但它绝对可靠。
答案 3 :(得分:0)
通过将EditText包装在FrameLayout中并将EditText设置为match_parent,我能够使EditText与剩余宽度相匹配。这似乎也适用于Spinners。
<TableLayout
android:shrinkColumns="1"
android:stretchColumns="1" >
<TableRow>
<!-- column 0 -->
<TextView
android:text="some text" />
<!-- column 1 -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</FrameLayout>
</TableRow>
</TableLayout>