我很难让wrap_content
与TableLayout
一起工作。这是XML:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:stretchColumns="*"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:text="Column 1" />
<Button
android:id="@+id/button1"
android:text="Column 2" />
</TableRow>
</TableLayout>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button 2" />
</LinearLayout>
这是它的样子:
如您所见,尽管layout_weight
和TableLayout
中的Button
均为1,但按钮被压向右侧。
如here所述,我知道可以通过将layout_width
的{{1}}设置为TableLayout
来解决此问题,但我不想这样做。我特别想将0dp
用作wrap_content
的{{1}},因为使用layout_width
而不是TableLayout
意味着我不需要。>
即,当使用0dp
而不是wrap_content
时,0dp
会假设wrap_content
的宽度为0,然后将剩余空间分配给所有子项。但是,在使用LinearLayout
时,TableLayout
将首先计算子项的最小宽度,从剩余空间中减去该最小宽度,然后在子项之间分配剩余空间,这将导致截然不同的结果,对于我的特定用例来说很重要。
这就是为什么我需要找到一种将wrap_content
与LinearLayout
一起使用的方法。当使用wrap_content
代替TableLayout
时,将LinearLayout
设置为TableLayout
可以正常工作。似乎只有layout_width
与wrap_content
不兼容。这是Android的错误,还是我在这里做错了什么?
答案 0 :(得分:0)
make android:layout_width =“ 0dp”`
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:stretchColumns="*"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:text="Column 1" />
<Button
android:id="@+id/button1"
android:text="Column 2" />
</TableRow>
</TableLayout>
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button 2" />