textView中的getHeight(),getWidth()返回0

时间:2012-01-17 04:43:15

标签: java android textview

我想在textView中使用getHightgetWidth文本。我引用了很多主题,但还没有发现我的问题。在某些主题中,请参阅以下解决方案:

    @Override
public void onWindowFocusChanged(boolean hasFocus) {
   // TODO Auto-generated method stub
   super.onWindowFocusChanged(hasFocus);
   Log.d("line", ""+selectA.getLineCount());
   Log.d("hight", "" +selectA.getHeight());
}

   TextView upV = (TextView)findViewById(R.id.up);
   ViewTreeObserver vto = upV.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            Log.d("W ", ""+upV.getWidth());
            Log.d("H ", ""+upV.getHeight());
        }
    });

这些解决方案可以根据需要获得价值,但不是每次应用都运行时,有时会return 0。请帮帮我

5 个答案:

答案 0 :(得分:1)

您过早地致电getWidth()getHeight()。 UI尚未调整大小并在屏幕上显示,因此,方法正确返回0。

答案 1 :(得分:0)

要获取视图的高度或宽度,您可以覆盖此视图的onDraw(Canvas画布):

@Override
protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);

    int w = getWidth();
    int h = getHeight();
}

答案 2 :(得分:0)

之所以得到这个,是因为在查询高度图时未绘制。

解决方案-

textView.post(new Runnable() {
        @Override
        public void run() {
             //height is ready
         int height = textView.getHeight();
        }
    });

答案 3 :(得分:0)

使用以下代码获取TextView的高度和宽度

textView.measure(0,0)
int w = textView.getMeasuredWidth();
int h = textView.getMeasuredHeight();

答案 4 :(得分:-1)

我找到了一个简单的......非常简单的解决方案。

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class SimpleActivity extends Activity {

private TextView textView;
private int displayWidth, displayHeight;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    textView = (TextView) findViewById(R.id.hello_tv);      
    textView.setOnClickListener(                
            new OnClickListener()
            {
                @Override
                public void onClick(View v) {
                    displayWidth = textView.getWidth();
                    displayHeight = textView.getHeight();
                    textView.setText(displayWidth + "\n" + displayHeight);                      
                }
            }
            );              
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}