Android布局忽略了重力属性

时间:2012-06-08 20:37:34

标签: android android-layout android-xml

我有几个列表项。一个是有效的,另一个没有,它们看起来都相同。这真的应该是一个在XML文件中“发现差异”的游戏,但我不能,因为我的生活,弄清楚什么是错的。其中一个列表项是完美的,另一个拒绝证明布局右侧的一些视图,如xml中所示。这是包含代码的每个样子。

^ list_view_item_2.xml:

<?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="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:padding="5dp">
    <TextView
        android:id="@+id/item_text_product"
        android:textSize="20sp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_width="0dp"/>
    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TableRow>
            <TextView
                android:id="@+id/item_text_total"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_span="2"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
        </TableRow>
        <TableRow>
            <TextView
                android:id="@+id/item_text_units"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
            <TextView
                android:id="@+id/item_text_uom"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
        </TableRow>
        <TableRow>
            <TextView
                android:id="@+id/text_acog"
                android:text="COG:"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
            <TextView
                android:id="@+id/item_text_acog"
                android:paddingLeft="1sp"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

下一个布局是有效的。

^ inventory_child_item.xml: 并且代码看起来完全相同,大部分都是......

<?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="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:padding="5dp">
    <TextView
        android:id="@+id/ici_site"
        android:textSize="20sp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_width="0dp"/>
    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TableRow>
            <TextView
                android:id="@+id/ici_units"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
            <TextView
                android:id="@+id/ici_uom"
                android:paddingLeft="1sp"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
        </TableRow>
        <TableRow>
            <TextView
                android:id="@+id/ici_total"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_span="2"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
        </TableRow>
        <TableRow>
            <TextView
                android:id="@+id/ici_price"
                android:gravity="right"
                android:textStyle="bold"
                android:layout_span="2"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

3 个答案:

答案 0 :(得分:1)

MoonlightCheese,

我可以在您的代码中找到的唯一区别是:在有效的布局中,名为@+id/ici_uom的TextView的填充为1sp。由于没有合理的原因,我可以弄清楚为什么这一行会导致任何差异,因为它不应该。您可能会更改此值,甚至可能将其添加到其他列表中,并且看不到行为上的差异。因此,我倾向于认为ListView本身或与父母的关系有所不同。

我这样说是因为您的列表项 是正确的,这是绝对的事实。似乎宽度在​​每个元素的基础上是关闭的。 fill_parent中的LinearLayout应该是指标。我会重新分析列表本身以及您可能如何填充视图。

如果没有您的父标记,很难确切地说出发生了什么以及为什么。这是因为我们不知道你如何使用ListView,如果有多个,如果一个是ListActivity而另一个不是,或者甚至是它们是如何嵌套的。

根据外观上的差异,我 假设 您有两个ListView s并且为了进一步帮助您,我们需要标记为他们和他们的父母。如果没有标记,那就是我要告诉你的地方。

希望这有帮助,

FuzzicalLogic

答案 1 :(得分:1)

您需要将match_parent设置为ListView

喜欢:

android:layout_width="match_parent"

答案 2 :(得分:0)

我认为textviews上的重力并不意味着你的情况,因为layout_width是wrap_content,这意味着textview将与你的文本一样大。如果您尝试将android:layout_gravity =“right”添加到TableLayout,该怎么办?