2011-05-31 73 views

回答

5

分離TextView的寬度並計算將在textview中顯示的文本的寬度。如果文本的寬度大於textView的寬度,這意味着您必須調用對話框,因爲文本會被追查。否則,文本完全適合TextView,沒有任何問題,所以不需要對話框。

使用下面的代碼。

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
// System.out.println("...111Height..."+mainLayout.getMeasuredHeight()); 

    isMarqueed("I am fine here. How r u", textView.getWidth(), textView); 
    isMarqueed("I am fine", textView.getWidth(), textView); 
} 


private boolean isMarqueed(String text, int textWidth, TextView tv) { 
    Paint testPaint = new Paint(); 
    testPaint.set(tv.getPaint()); 
    boolean isMarquee = true; 
    if (textWidth > 0) { 
     int availableWidth = (int) (textWidth - tv.getPaddingLeft() - tv.getPaddingRight()-testPaint.measureText(text)); 
     System.out.println("...available width..."+availableWidth); 
//  tv.setText(text); 
     isMarquee = false; 
    } 
    return isMarquee; 
} 

感謝 迪帕克

+0

感謝@DKIT Android和@Deepak的快速回復,您的解決方案聽起來不錯。 – Webworx23 2011-06-01 06:51:51

+0

如果你喜歡它,你可以接受並投票我的答案 – 2011-06-01 06:55:30

+0

這是被接受的答案嗎?如果您傳遞適當的寬度,條件'textWidth> 0'將始終爲真。你是不是應該檢查'availableWidth'變量來設置'isMarquee'變量爲true還是false? @SunilKumarSahoo – 2015-09-02 09:52:50

0

嘗試使用Paint.getFontMetrics來確定文本需要多少空間,然後計算它是否適合TextView。