当RatingBar与TextView位于同一表格行时,Android中的显示不正确

当RatingBar与TextView位于同一表格行时,Android中的显示不正确,android,android-layout,Android,Android Layout,所以我有一个Android 1.6活动,它使用了一个TableLayout。其中一行中有一个分级栏。这是我的xml: <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <

所以我有一个Android 1.6活动,它使用了一个TableLayout。其中一行中有一个分级栏。这是我的xml:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TableRow>
        <TextView android:text="name"
            android:padding="3dip"/>
        <TextView android:text="@+id/name"
            android:padding="3dip"/>
    </TableRow>
    <TableRow>  
        <TextView android:text="tags"
            android:padding="3dip"/>
        <TextView android:id="@+id/tags"
            android:padding="3dip"/>
    </TableRow>
    <TableRow>
        <TextView android:text="rating"
            android:layout_width="wrap_content"/>
        <RatingBar android:id="@+id/rating"
            style="?android:attr/ratingBarStyleIndicator"
            android:layout_width="wrap_content"
            android:rating="4"
        android:numStars="5"/>
    </TableRow>
    <TableRow>
        <TextView android:text="long string"
            android:padding="3dip"/>
        <TextView android:text="this is a very very very long string"
            android:padding="3dip"/>
    </TableRow>

...
</TableLayout>

...
我想在表格行的左边放一个文本标签,然后在右边放一个五星评级条。但当我这样做时,评级值显示错误,并且在指定的最大值5以上有许多虚假的空星:

如果我取出“评级”文本视图,则评级栏位于其自己的表行上,评级栏将按预期显示,显示5个可能的星星中的4个:

有人知道是否有可能在同一行上有一个分级栏作为TextView吗?还是我需要重新考虑这个布局


编辑为添加:我认为表中显示长文本字符串的另一行是导致问题的原因。如果没有上面示例中的“长字符串”行,分级栏将正确显示在与“分级”文本相同的行中。

我认为星号分级可能改变大小的原因是由于表格行自动展开以适应其父行的方式(相对于其相邻表格行)

您尚未在问题中显示TableLayout元素,因此如果以下内容无法帮助您解决问题,您可能需要添加该元素

在TableLayout中,可以指定收缩列和拉伸列元素。列出要收缩或展开的列索引。第一列是索引0

<TableLayout android:shrinkColumns="1,0" android:stretchColumns="0,1"></TableLayout>

您不需要同时列出这两个属性,使用它们进行实验可能更容易找到适合您的属性。请注意,如果拉伸列,我认为它们会拉伸以匹配父级,在这种情况下,可能会发现列消失

我想你会想缩小第二栏,把你的星级也包括在内

希望有帮助。

修复了它

我只需要在“longstring”列上设置一个最大宽度,即

<TableRow>
    <TextView android:text="long string"
        android:padding="3dip"/>
    <TextView android:text="this is a very very very long string"
        android:layout_width="wrap_content"
        android:maxWidth="100dip"
        android:padding="3dip"/>
</TableRow>  


我想RatingBar需要在表格单元格中限制其空间-如果另一个组件给了它太多的空间,它将扩展以填充它,从而产生意想不到的后果。

在1.6模拟器上,这对我来说很好,TableLayout作为根视图,并设置为fill_PARENT.ah。我意识到是表格中的另一行导致了问题。另一行包含一个长文本字符串,该字符串似乎将表格单元格的大小向外推,从而导致分级栏显示不正确。我将修改我的代码片段来演示这一点。当然,您的问题可能是评级组件中的一个错误,这会很糟糕。顺便说一句,无法使其正常工作,尝试收缩第二列,并尝试所有拉伸和收缩列的组合,但问题仍然存在:(这是实际原因。很好的解释。