[英]getHeight(), getWidth() in textView return 0
我想在getHight
中獲取文本的getHight
和getWidth
。 我引用了許多主題,但尚未發現我的問題。 在某些主題中,可以看到一些解決方案,例如:
@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.