我需要实现这个功能: 我有一些字符串。例如
发现泰迪熊10
如果此字符串不适合视图,则应该变为
发现泰迪熊... 10
另外,如果我没有找到物品的价值,那么它应该是
发现泰迪熊
和
发现泰迪熊......
ellipses="middle"
不适合我。
找到下一个答案https://stackoverflow.com/a/12252144/1839853,但此代码对我不起作用。
答案 0 :(得分:0)
这样做
TextView tv = (TextView) findViewById(R.id.tv1);
tv.setText("Found teddy bears 10");
doEllipse(tv,1);
public void doEllipse(final TextView tv, final int maxLine) {
if (tv.getTag() == null) {
tv.setTag(tv.getText());
}
ViewTreeObserver vto = tv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
ViewTreeObserver obs = tv.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
if (maxLine <= 0) {
int lineEndIndex = tv.getLayout().getLineEnd(0);
String text = tv.getText().subSequence(0, lineEndIndex - 3) + "..."+tv.getText().subSequence(lineEndIndex - 3, lineEndIndex)+"";
tv.setText(text);
} else if (tv.getLineCount() >= maxLine) {
int lineEndIndex = tv.getLayout().getLineEnd(maxLine - 1);
String text = tv.getText().subSequence(0, lineEndIndex - 3) + "..."+tv.getText().subSequence(lineEndIndex - 3, lineEndIndex)+"";
tv.setText(text);
}
}
});
}