Android:动态分布的LinearLayout内容?

时间:2012-08-25 00:45:11

标签: android xml android-linearlayout

我已经尝试了所有尝试的东西,我开始怀疑这是不可能的。

我正在寻找的是根据宽度在(水平)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--------] ]

3 个答案:

答案 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>

What it would look like.

注意:“这将占用更多空间”的背景是灰色的,因为我在将鼠标悬停在TextView上时截取屏幕截图,以便可以看到它的全长。