2011-05-31 75 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。