我有一个活动,我希望显示占据应用程序前四分之一的标题,并显示一组动态文本。在某些情况下,它将全部放在一条线上,我希望字体大小可以调整大小,因此它很大且易于阅读。在某些情况下,它将在多行(通常少于4行)并且需要更小。
复杂的是,如果我在setText中明确设置换行符,它有时会插入一个我不想要的换行符,即:
"My first line of text\nMy Second line of text" Might get turned into (it's right adjusted in this version): "My first line of text My second line of text"
我不确定如何保持TextView不要尝试插入换行符或让它只是处理格式化整个事情。如果我将一些文本设置为一个非常长的单个单词,它将在某个选定点的中间插入换行符。有时候我只是随机地得到最后几行文字。
我是否应该明确将字体大小设置为非常小以使其正确布局,然后手动调整大小?我应该使用“最佳实践”吗?如果我将字体大小设置为一个相当大的字体,那么它的工作方式很有用,但要弄清楚“正确”的方法是多么的好。而且我宁愿不必手动添加4个单行TextView并自行格式化。
我正在使用的布局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"
/>
答案 0 :(得分:1)
您可以计算字符串长度并设置文本大小以适合每个长度的最佳大小
这种形式的东西
if(myString.length()==40){
myTextview.setTextSize(11);
else if(myString.length()==25){
myTextview.setTextSize(16);
...
我希望这会有所帮助。
答案 1 :(得分:0)
你可以做到。在字符串值中附加换行符。然后将此字符串值设置为TextView的文本属性。
String temp = "ASDF \n"+"EFG \n"+"HIJ";
TextView tv=//find it from the context
tv.setText(temp);
答案 2 :(得分:0)
还有一个解决方案,您可以使用WebView执行您想要的操作,查看此Android TextView Justify Text答案以获取详细信息。使用webview你不必关心你可以通过html css属性管理的行对齐
答案 3 :(得分:-1)
让我回顾你的问题,以确保我理解正确。
我建议您制作custom view: