我们如何正确使用TextViews和字体?

时间:2015-03-23 10:15:25

标签: java android textview android-fonts

当我们有一个TextView文本具有一定大小时,似乎如果我们在封闭布局中添加填充,那么文本就会换行以保持相同的字体大小。
但这是否意味着设置特定的字体大小可能会导致不同屏幕大小的问题等? 因为我在某种程度上期待文本将被重新调整大小"即使字体大小受到影响,也要保持一行。此外,似乎如果我的文字有更多的字符,这条线也会缠绕并弄乱我的布局 如果显示的字符更多,我怎么能使用then字体而不是弄乱我的布局?

更新
基本上我的问题是,我们如何处理可以采用任意长度字符串并适当使用字体的TextViews

2 个答案:

答案 0 :(得分:2)

一般来说,我发现将layout_width和/或layout_height设置为wrap_content可以满足我的大部分需求。但是,有些情况下文本长度会变得太长。在这种情况下,人们使用了一些不同的策略。您选择的那个取决于您的布局和您想要实现的目标。

动态调整文本大小

您在问题中提到了字体大小,因此我将首先介绍它。您可以使用不同的值或dimensions来更改不同设备大小和方向的字体大小。

这样做并不一定使字体适合TextView。所以有些人试图以编程方式调整字体大小。这似乎不是Android中的主流解决方案,但这是一个讨论:

截断文字

如果文字太长而无法放入TextView的布局中,并且无需查看整个内容,您可以在最后将其剪掉。您还可以使用android:ellipsize选项。阅读这些以获取更多详细信息:

使用ScrollView

当我有一个可能包含大量文本的TextView时,我通常将它放在ScrollView中。有关详细信息,请参阅此答案:

答案 1 :(得分:0)

编写这样的代码。

首先声明一个LinearLayout,然后声明一个TextView

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:layout_weight="1">

      <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textColor="#000000"
          android:gravity="center"
          android:text="Hi I am Jay"
          android:textSize="16sp" />
</LinearLayout>

此处LinearLayout的重力表示TextView位于LinearLayout的中心,而重力文字TextView表示文本将位于TextView的中心。您可以在textSize字段中将textSize更改为18sp或20sp。