当应用gravity样式时,TextView只显示一个字符

6
我有一个带有3行数字(汇总信息)的表格。当TextView使用它们默认的对齐方式进行样式设置时,文本会正确显示。
但是,在使用<item name="android:gravity">right</item>进行样式设置时,每个TextView只显示应该显示的第一个字符。
这甚至包括未更改的列标题(此处未显示)。
我希望表格值能够右对齐,以与应用程序的其他部分保持一致,但我对表格中的值为什么会出现这种情况感到困惑。
这是我的样式(当它不起作用时):
<style name="summary_values">
    <item name="android:textSize">@dimen/font_size</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@color/background</item>
    <item name="android:gravity">right</item>
</style>

这是其中一个单元格的XML代码(它们基本上都是一样的)。
<TextView 
    android:id="@+id/value1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="@integer/table_weight_percent_value"
    style="@style/summary_values"/>

编辑

即使将gravity设置为leftcenter,截断仍会发生。

编辑2

我已经从样式中删除了<item name="android:gravity">right</item>这一行,有时它仍会被截断,具体取决于值。我已经逐步执行了代码并且代码中的值是正确的。

编辑3

除了字体颜色之外,我已经删除了所有样式,但仍然会发生截断,但我还没有找出什么原因。如果我更改输入表中的数字,摘要值有时会被截断,有时则不会。

以下是一个来自表格的行。除了ID更改之外,所有行都相似。

<TableRow
    android:padding="@dimen/pad_12">
    <TextView 
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="@integer/table_weight_percent_label"
        android:text="@string/cho"
        style="@style/label_light"/>
    <TextView
        android:id="@+id/percent_1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="@integer/table_weight_percent_value"
        style="@style/summary_values"/>
    <TextView 
        android:id="@+id/val1a"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="@integer/table_weight_percent_value"
        style="@style/summary_values"/>
    <TextView 
        android:id="@+id/val1b"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="@integer/table_weight_percent_value"
        style="@style/summary_values"/>
</TableRow>

编辑4

尝试了多种方法后,我将包含TableView的布局更改为具有水平方向的LinearLayout。我甚至保留了TableRow视图(只添加了layout_width和layout_height)。令人惊讶的是,现在它可以正常工作了。

再描述一下奇怪的行为:当它只显示第一个字符时,如果我打开软键盘并再次关闭它,则表格会正确显示,直到我更改其中一个EditText的值。即使我从表中删除了2列,仍然会出现这种奇怪的行为,因此视图还有足够的空间。


@matiash:我以前没有做过这个,而且我花了一些时间才弄对。 - Mike T
我问这个问题是因为很可能所有的TextView在水平方向上都比它们应该的要大,而且彼此重叠。当文本左对齐时不可见,但当文本居中或右对齐时就会出现。table_weight_percent_value的值是多少?我的意思清楚吗? :) - matiash
“Correctly sized” 意思是它们占据了整个列空间?那很奇怪。你能否构建一个独立的示例来重现这个问题? - matiash
无法重现您的问题。您能否发布完整的代码(布局、字符串、尺寸),或简化您的代码,以便能够组装出完全相同的示例? - praetorian droid
你能否把你的项目发送给我? - Haresh Chhelana
显示剩余8条评论
1个回答

1
经过尝试了很多方法后,我将包含 TableView 的布局更改为水平方向的 LinearLayout。我甚至保留了 TableRow 视图(只是添加了 layout_width 和 layout_height 属性)。令人惊讶的是,现在它可以工作了。
我不知道为什么之前不能工作,也不知道为什么现在能工作。如果有人能提供一些见解,我会非常感激。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接