我想在textView中使用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
。请帮帮我
答案 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;
}
}