2017-10-09 50 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); 

     } 
    });