繁体   English   中英

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

[英]getHeight(), getWidth() in textView return 0

我想在getHight中获取文本的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 请帮我

您太早调用getWidth()getHeight()了。 UI尚未调整大小并在屏幕上布局,因此,方法正确返回0。

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

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

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

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

解-

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

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

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

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

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;
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM