如何在WRAP_CONTENT中使用TableLayout?

时间:2018-07-31 12:16:41

标签: android android-layout android-linearlayout android-tablelayout

我很难让wrap_contentTableLayout一起工作。这是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> 

这是它的样子:

Screenshot

如您所见,尽管layout_weightTableLayout中的Button均为1,但按钮被压向右侧。

here所述,我知道可以通过将layout_width的{​​{1}}设置为TableLayout来解决此问题,但我不想这样做。我特别想将0dp用作wrap_content的{​​{1}},因为使用layout_width而不是TableLayout意味着我不需要。

即,当使用0dp而不是wrap_content时,0dp会假设wrap_content的宽度为0,然后将剩余空间分配给所有子项。但是,在使用LinearLayout时,TableLayout将首先计算子项的最小宽度,从剩余空间中减去该最小宽度,然后在子项之间分配剩余空间,这将导致截然不同的结果,对于我的特定用例来说很重要。

这就是为什么我需要找到一种将wrap_contentLinearLayout一起使用的方法。当使用wrap_content代替TableLayout时,将LinearLayout设置为TableLayout可以正常工作。似乎只有layout_widthwrap_content不兼容。这是Android的错误,还是我在这里做错了什么?

1 个答案:

答案 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" />