【问题标题】:Strange TableRow height behavoir with different heights不同高度的奇怪表行高度行为
【发布时间】:2016-11-10 03:20:28
【问题描述】:

我的应用程序中的 TableLayout 存在以下问题。尽管代码相同,内容也相同,但 TableRows 有时具有完全不同的高度。这是我的代码的 sn-p(剪掉其他行),为了更好地理解两张图片(粉红色是 textViews 的大小):

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:shrinkColumns="*"
    android:stretchColumns="*" >

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#F0FFF0"
        android:gravity="center_vertical"
        android:paddingBottom="3dp"
        android:paddingTop="3dp" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#FF00FF"
            android:gravity="right"
            android:paddingRight="3dp"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.25"
            android:background="#FF00FF"
            android:ems="10"
            android:gravity="center"
            android:imeOptions="actionNext"
            android:inputType="numberSigned"
            android:maxLength="1"
            android:singleLine="true" >

        </EditText>

        <TextView
            android:id="@+id/textView3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#FF00FF"
            android:gravity="left"
            android:paddingLeft="3dp"
            android:textAppearance="?android:attr/textAppearanceSmall" />

    </TableRow>      

    <TableRow
        android:id="@+id/tableRow5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#E0EEE0"
        android:gravity="center_vertical"
        android:paddingBottom="3dp"
        android:paddingTop="3dp" >

        <TextView
            android:id="@+id/textView8"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#FF00FF"
            android:gravity="right"
            android:paddingRight="3dp"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/editText4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.25"
            android:background="#FF00FF"
            android:ems="10"
            android:gravity="center"
            android:imeOptions="actionNext"
            android:inputType="numberSigned"
            android:maxLength="1"
            android:singleLine="true" >

        </EditText>

        <TextView
            android:id="@+id/textView9"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#FF00FF"
            android:gravity="left"
            android:paddingLeft="3dp"
            android:textAppearance="?android:attr/textAppearanceSmall" />

    </TableRow>    
    <TableRow
    android:id="@+id/tableRow10"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#F0FFF0"
    android:gravity="center_vertical"
    android:paddingBottom="3dp"
    android:paddingTop="3dp" >

    <TextView
        android:id="@+id/textView18"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="#FF00FF"
        android:gravity="right"
        android:paddingRight="3dp"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/editText9"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.25"
        android:background="#FF00FF"
        android:ems="10"
        android:gravity="center"
        android:imeOptions="actionNext"
        android:inputType="numberSigned"
        android:maxLength="1"
        android:singleLine="true" >

    </EditText>

    <TextView
        android:id="@+id/textView19"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="#FF00FF"
        android:gravity="left"
        android:paddingLeft="3dp"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</TableRow>
</TableLayout>
</ScrollView>

您可以在第一张图片中看到 tableRow2 填充了 2 行 textView 并且有一个非常小的填充(红色阴影线),tableRow5 只有 1 行条目,tableRow10 也是如此,但是 tableRow10 的高度很多更高(蓝色影线)。

在第二张图片中,您可以看到完全相同的布局,只是更改了顺序条目,并且行的高度完全不同。我不知道为什么会发生这种情况,我正在更改条目的顺序,有时它更大,有时更小。

【问题讨论】:

    标签: android height android-tablelayout tablerow


    【解决方案1】:

    好的,从

    更改 ScrollViews 属性
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    

    似乎解决了这个问题。我只是不明白为什么...... :)

    【讨论】: