Ellipsize字符串在android中的最后一个单词之前

时间:2013-09-25 13:20:49

标签: android ellipse

我需要实现这个功能: 我有一些字符串。例如

  

发现泰迪熊10

如果此字符串不适合视图,则应该变为

  

发现泰迪熊... 10

另外,如果我没有找到物品的价值,那么它应该是

  

发现泰迪熊

  

发现泰迪熊......

ellipses="middle"不适合我。

找到下一个答案https://stackoverflow.com/a/12252144/1839853,但此代码对我不起作用。

1 个答案:

答案 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);

                }
            }
        });

    }