10

我有一个活动,我想在其中显示一个占据应用程序顶部四分之一的标题并显示一组动态文本。在某些情况下,它会全部放在一行上,我希望字体大小变大,这样它就大且易于阅读。在某些情况下,它将位于多行(通常少于 4 行)并且需要更小。

复杂之处在于,如果我在 setText 中明确设置换行符,有时它会在我没想到的地方插入换行符,即:

"我的第一行文字\n我的第二行文字"
可能会变成(在这个版本中正确调整):
“我的第一行
             文本
   我的第二行
          文字”

我不确定如何阻止 TextView 尝试插入换行符或让它只负责格式化整个内容。如果我将一些文本设置为一个非常长的单词,它将在中间的某个选定点插入一个换行符。其他时候,我只是随机获取最后几行文本。

我是否应该明确地将字体大小设置为非常小以使其正确布局,然后手动调整大小?我应该为此使用“最佳实践”吗?如果我将字体大小设置为相当大的字体,它会起作用,但很高兴弄清楚这样做的“正确”方法是什么。而且我宁愿不必手动添加 4 个单行 TextViews 并自己格式化它们。

我正在使用的布局 xml 是:

<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="10dip"
        android:layout_marginRight="8dip"
        android:singleLine="false"
        android:ellipsize="marque"
        android:gravity="right|bottom"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="30sp"
/>
4

4 回答 4

1

您可以计算字符串长度并设置文本大小以适合每个长度的最佳大小

这种形式的东西

if(myString.length()==40){
    myTextview.setTextSize(11);
else if(myString.length()==25){
    myTextview.setTextSize(16);
...

我希望这有帮助。

于 2012-12-16T04:42:46.443 回答
0

你能行的。将新行字符附加到字符串值。然后将此字符串值设置为 TextView 的文本属性。

String temp = "ASDF \n"+"EFG \n"+"HIJ";
TextView tv=//find it from the context
tv.setText(temp);
于 2012-04-07T09:06:00.497 回答
0

还有另一种解决方案,您可以使用 WebView 来做您想做的事情,请查看此Android TextView Justify Text答案以了解详细信息。使用 webview,您不必关心行对齐,您可以通过 html css 属性来管理它

于 2012-09-10T12:44:12.710 回答
-1

让我回顾一下你的问题,以确保我正确理解你。

  1. 您的输入始终是 1 到 4 行文本
  2. 如果你有不止一行,你总是并且只想在一行的末尾打断
  3. 你想让每一行尽可能大,以便它适合文本视图,它是高度屏幕的 1/4?

我建议您制作一个自定义视图

于 2012-09-10T12:53:32.183 回答