Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:TextView自动截断并替换字符串的最后3个字符_Java_Android_Textview - Fatal编程技术网

Java Android:TextView自动截断并替换字符串的最后3个字符

Java Android:TextView自动截断并替换字符串的最后3个字符,java,android,textview,Java,Android,Textview,如果字符串比文本视图的宽度长,它会自动换行到下一行。我可以通过使用android:singleLine(已弃用)或设置android:inputType=“text”来避免这种情况。我现在需要的是用“…”替换我的字符串的最后3个字符。由于我没有使用单空格字体,因此根据字符串中使用的字母的不同,这种字体总是不同的。因此,我想知道在TextView中获取字符串的最后3个字符并替换它们的最佳方法是什么。可能Android框架中已经实现了一些功能,因为这一定是一个常见问题。您应该能够使用文本视图的“el

如果
字符串
文本视图
的宽度长,它会自动换行到下一行。我可以通过使用
android:singleLine
(已弃用)或设置
android:inputType=“text”
来避免这种情况。我现在需要的是用“”替换我的
字符串的最后3个字符。由于我没有使用单空格字体,因此根据
字符串中使用的字母的不同,这种字体总是不同的。因此,我想知道在
TextView
中获取字符串的最后3个字符并替换它们的最佳方法是什么。可能Android框架中已经实现了一些功能,因为这一定是一个常见问题。

您应该能够使用文本视图的“ellipsize”属性:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>


您可能还需要将重力值应用于布局;我有时会看到没有它们的“自动拉伸”视图。

发现了一个解决此问题的有趣方法

maxLines=1
ellipsize=end
scrollHorizontally=true

诀窍是关于水平滚动的最后一句话。。。。过来看。它至少可以在v2.2上运行。

通过编程,您可以使用:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);

完美的谢谢我以前尝试过,但没有成功,因为我使用了android:inputType=“text”而不是android:singleLine=“true”(这应该是不推荐的)。但现在我要坚持使用android:singleLine=“true”。穆查斯·格雷西亚斯。它仍然没有添加“…”。对我来说,这个问题还没有完全回答!这个答案将使“short verylongword”变成“short”而不是“short verylon…”,除此之外,你们建议使用一个不推荐使用的属性。效果很好,但是singleLine不推荐使用,所以必须使用maxLines=“1”。另请注意,ellipsize也适用于多行!单线不推荐使用。使用maxLines=“1”。对旧的AdvestMax行= 1的注释将截断中间的TeTVIEW视图。SingleLine=True按预期工作。有趣。。。很高兴知道。谢谢马可的提醒。