【问题标题】:How to center a title in a TextView with 2 lines?如何在 2 行的 TextView 中将标题居中?
【发布时间】:2011-03-28 09:17:50
【问题描述】:

我知道如何在 TextView 中居中文本以及如何在其父布局中居中 TextView,但我正在寻找的是如何居中标题(文本居中但第二行从同一点开始)。

我要找的是这个:

 |  Centered  |
 |  right!    |

或者这个:

|    Center    |

不是这个(文本居中):

 |     Too    |
 |  centered! |

或者这个(以TextView为中心):

 |Centered    |
 |wrong!      |

或者这个(有填充和左边):

|  |Also     |  |
|  |wrong!   |  |

有人明白这个吗?是否可以在不对字符串本身进行编码的情况下做到这一点?

【问题讨论】:

    标签: android android-widget alignment textview


    【解决方案1】:

    使用android:padding 属性添加一些填充,并使用android:gravity="left" 为您的TextView。

    顺便说一句:还请注意,您始终可以在 TextView 中使用 Html,即

    txtView.setText( Html.fromHtml("Centered<br/>right!") );
    

    但如果按钮宽度设置为自动分词,则您可能不需要它。

    如果你想根据两行的长度(你不知道哪一行更长)使文本居中,你实际上需要先计算宽度,然后对填充进行相应的调整.你不能只计算字母的数量来知道更长的单词,因为每个字母都有不同的宽度(至少如果你使用 DroidSans 作为默认字体)。

    因此,通过 s.split(" ") 拆分字符串,然后先计算两行的宽度:

    txtText.getPaint().measureText(s[0])
    txtText.getPaint().measureText(s[1])
    

    然后根据返回值,相应地设置文本视图的左填充。

    【讨论】:

    • 如果我使用 android:padding 和 android:gravity="left" 那么短标题将不会居中。但我想我可以忍受...
    • 三思而后行。这行不通。我希望宽度是动态的,因此最长线的中心位于图片上方的中心。我可能没有正确解释这一点。 ://
    • 我现在明白了。感谢您的帮助。
    【解决方案2】:

    添加另一个 TextView 会解决问题吗?我的意思是,定义两个 TextView:一个居中,另一个右对齐。

    【讨论】:

      【解决方案3】:

      将 layout_width 设置为 fill_parent 并将 android:gravity(不是 layout_gravity)设置为 center。这将使文本视图中的每一行文本单独居中,与父视图大小相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-12
        • 2011-02-16
        • 2020-03-05
        • 2011-06-14
        • 2023-03-18
        • 2018-04-16
        • 1970-01-01
        相关资源
        最近更新 更多