我已经尝试了所有尝试的东西,我开始怀疑这是不可能的。
我正在寻找的是根据宽度在(水平)LinearLayout中动态分配N个孩子。有点像HTML表,它通过动态计算列宽来实现。基本上我想把我的ListView变成一个动态计算宽度的表,如下所示:
<table class="ListView">
<tr class="LinearLayout"><td class="TextView">John:</td><td class="TextView">123-456-789</td></tr>
<tr class="LinearLayout"><td class="TextView">Mike:</td><td class="TextView">321-654-987</td></tr>
<tr class="LinearLayout"><td class="TextView">Sally:</td><td class="TextView">789-456-123</td></tr>
</table>
如何在Android中执行类似的操作?请记住,我不只是想把它分成两个同样长的部分。我需要内容来确定列宽和填充整个LinearLayout。像这样(假设只有两个子元素):
[ [--TextView--] [--------TextView--------] ]
答案 0 :(得分:1)
使用LinearLayout
是不可能的。您必须对TableLayout
wrap_content`中的所有元素使用TableRow' having width
。如果您要显示的行没有动态,那么您必须动态地在ViewGroup中创建和插入行,否则它非常直接用于静态数据。
答案 1 :(得分:0)
您可以为android:layout_weight="1"
中的所有TextView
设置TableRow
,但使用过多权重对性能不利。
答案 2 :(得分:0)
我猜你在找这样的东西?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="100" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This will take up much more space"
android:layout_weight="20" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="test"
android:layout_weight="80" />
</LinearLayout>
</LinearLayout>
注意:“这将占用更多空间”的背景是灰色的,因为我在将鼠标悬停在TextView上时截取屏幕截图,以便可以看到它的全长。