假设我有一个 LinearLayout (宽度和高度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即使我指定了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>
答案 0 :(得分:5)
使用android:layout_width =“0dp”而不是android:layout_width =“wrap_content”用于外部TableLayouts。
同时指定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”
答案 1 :(得分:3)
android:layout_width= "0dp"
代替“wrap_content"
答案 2 :(得分:0)
将所有Table布局的layout_height和layout_width设置为“fill_parent”。 你会完成的。
答案 3 :(得分:0)
您可以在一个表格布局中使用表格行,并使用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>`