4

假设我有一个带有weightSum = "5"的LinearLayout (width & height match_parent) ,然后以水平方式

我将5 个 TableLayout (width & height wrap_content) 与layout_weight = "1"放在一起,因此每个 TableLayout 都是其父级的 1/5。

但是,在那之后,在每个TableLayout中,我放了一个TextView(宽度和高度 wrap_content)并且每件事都出错了(从我的角度来看):

如果文本太长,那么它会强制其父布局(在我们的例子中为 TableLayout)展开,因此不再尊重来自其 LinearLayout 父级的 TableLayout 的 1/5 比例,即使我指定了 TextView,s ellipsize=" end ”。

好吧,在做了一些研究之后,我发现设置layout_width比其他所有属性都(比如 weightSum)

在我的例子中,我设置了TableLayout 的 width=wrap_content和layout_weight="1"但是因为它是 wrap_content,它倾向于在它的内容之后扩展而不是尊重权重。

谁能给我一些解决方案,我的表格布局如何尊重重量?(因为我不希望我的布局不尊重比例并在子文本视图的长度之后花费)。

谢谢你的好意。这是我的代码:

<!-- my code -->
< LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:weightSum="5" >

            <!-- table 1 -->

            <TableLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:ellipsize="end" 
                    android:maxLines="1"
                    android:text="test1test2test3test4test5"
                    android:textSize="20dp"/>

               <TableLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">


                </TableLayout>
            </TableLayout>

            <!-- table 2 -->

            <TableLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:text="test"
                    android:textSize="20dp" />

                <TableLayout 
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                </TableLayout>
            </TableLayout>

            <!-- table 3 -->

            <TableLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1" >

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:text="test"
                    android:textSize="20dp" />

                <TableLayout 
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                </TableLayout>
            </TableLayout>

            <!-- table 4 -->

            <TableLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:text="test"
                    android:textSize="20dp" />

                <TableLayout 
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                </TableLayout>
            </TableLayout>

            <!-- table 5 -->

            <TableLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1" >

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:text="test"
                    android:textSize="20dp" />

                <TableLayout 
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                </TableLayout>
            </TableLayout>

        </LinearLayout>
4

4 回答 4

5

对外部 TableLayouts 使用 android:layout_width="0dp" 而不是 android:layout_width="wrap_content"。

还要指定 android:layout_weight="1"。

删除 android:weightSum="5" 以自动调整大小。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal" >

  <!-- table 1 -->

  <TableLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:gravity="center_horizontal"
        android:text="test1 test2 test3 test4 test5"
        android:textSize="20dp" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </TableLayout>
  </TableLayout>

<!-- table 2 -->

  <TableLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="test"
        android:textSize="20dp" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </TableLayout>
  </TableLayout>

<!-- table 3 -->

  <TableLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="test"
        android:textSize="20dp" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </TableLayout>
  </TableLayout>

<!-- table 4 -->

  <TableLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="test"
        android:textSize="20dp" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </TableLayout>
 </TableLayout>

<!-- table 5 -->

  <TableLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="test"
        android:textSize="20dp" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </TableLayout>
  </TableLayout>

</LinearLayout>

为什么 TableLayout 里面有空?如果您想查看整个文本,请设置 android:ellipsize="none"

于 2012-12-07T09:45:35.137 回答
3

android:layout_width= "0dp"对于所有五个父表布局,而不是“wrap_content"

于 2012-12-07T09:49:56.410 回答
0

将所有表格布局的 layout_height 和 layout_width 设置为“fill_parent”。你会做的。

于 2012-12-07T09:39:13.967 回答
0

您可以在一个表格布局中使用 Table Row 并在表格布局中使用 weight_sum

       ` <TableLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:weightSum="5"/>
            <TableRow 
                        your text 
             />
            <TableRow 
                        your text 
             />
        <TableRow 
                        your text 
             />
       <TableRow 
                        your text 
             />
       <TableRow 
                        your text 
             />
       </TableLayout>`
于 2012-12-07T09:46:12.627 回答