gpt4 book ai didi

android - 为什么布局不符合指定的权重?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:44 25 4
gpt4 key购买 nike

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

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

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

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

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

在我的例子中,我设置了 TableLayout 的 width=wrap_content 也设置了 layout_weight="1" 但因为它是 wrap_content,它往往会在其内容之后扩展而不是尊重重量。

任何人都可以给我一些解决方案,我的表格布局如何尊重重量?(因为我不希望我的布局不尊重比例并在子 TextView 的长度之后扩展)。

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

<!-- 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>

最佳答案

对外部 TableLayout 使用 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"

关于android - 为什么布局不符合指定的权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13760364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com