如果a String长于TextView宽度,它会自动换行到下一行.我可以通过使用android:singleLine(已弃用)或通过设置来避免这种情况android:inputType="text".我现在需要的是String用" ...... " 代替我的最后3个字符.由于我没有使用等宽字体,因此根据我使用的字母不同,这将总是不同的String.所以我想知道在a中获取字符串的最后3个字符的最佳方法是什么,TextView并替换它们.也许已经在Android框架中实现了一些东西,因为这必然是一个常见的问题.
我的TextView宽度为wrap content.在这个TextView我设置文本,但文本每次都不是相同的长度.当文本很长时,我使用单行true和ellipsize:end.但现在我有一个问题.我想设置其他布局的可见性,但这取决于我的文本的长度.如果文本太长而无法放入屏幕我想setVisible为true,但是当文本很短并且我不需要ellipsize时,我想将可见性设置为false.所以我需要检查TextView的状态.当它的椭圆形时我想要setVisible真实,当它不是setVisible假的.我怎么能这样做 这就是我得到的:
tvAle.post(new Runnable() {
@Override
public void run() {
int lineCount = tvAle.getLineCount();
Paint paint = new Paint();
paint.setTextSize(tvAle.getTextSize());
final float size = paint.measureText(tvAle.getText().toString());
Log.v("a", ""+size+" "+tvAle.getWidth());
if ((int)size > (tvAle.getWidth()+10)) {
allergiesLayout.setVisibility(View.VISIBLE);
}
else
allergiesLayout.setVisibility(View.GONE);
}
Run Code Online (Sandbox Code Playgroud)
但这个解决方案不起作用.
我的布局看起来像这样:
[TextView 1] [TextView 2]
[ TextView 2 spill-over ]
Run Code Online (Sandbox Code Playgroud)
基本上,我需要将TextView 2的内容包装到下一行,但是从TextView 1启动的地方开始.我想如果我知道在第一行的空间用完之前有多少文本适合TextView 2,我可以把剩下的文本放在前两个下面的另一个TextView中.所以我需要测量文本适合TextView的数量(这可能很棘手,因为据我所知,Android会尝试在TextView中打破文本在一个好的位置,以便它不会破坏一个单词中间是否可以避免)或者我需要一个关于如何解决这个问题的新想法.
任何帮助将不胜感激.
提前致谢,
groomsy