簡體   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