2017-10-09 45 views
-1

我有一个TextView,其高度根据屏幕上的其他组件而有所不同。我在这个TextView中设置了一个长文本,因此我想省略它。只需指定android:ellipsize =“end”不起作用。只有在指定maxLines时,椭圆化才有效。但是我无法为maxLines指定一个值,因为TextView的高度是动态的。我如何获得文本椭圆化而没有为TextView指定maxLines?在TextView中忽略文本而不指定maxLines

+0

机器人:ellipsize = “结束”,如果我得到你的权利 –

+0

简单地指定的android:ellipsize = “结束” 是行不通的。只有在指定maxLines时,椭圆化才有效。 – DevAndroid

+0

更好追加...在最后或你的字符串值 –

回答

2

我找到了通过添加全局布局侦听器的问题的解决方案。 以下是代码片段

tvDesc.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      tvDesc.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
      int noOfLinesVisible = tvDesc.getHeight()/tvDesc.getLineHeight(); 

      tvDesc.setText(R.string.desc); 

      tvDesc.setMaxLines(noOfLinesVisible); 
      tvDesc.setEllipsize(TextUtils.TruncateAt.END); 

     } 
    });