我想知道如何测量 View 的尺寸。在我的例子中,它是一个绝对布局。我已经阅读了有关这些问题的答案,但我仍然不明白。
这是我的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AbsoluteLayout layoutbase = (AbsoluteLayout) findViewById(R.id.layoutbase);
drawOval();
}
public void drawOval(){ //, int screenWidth, int screenHeight){
AbsoluteLayout layoutbase = (AbsoluteLayout) findViewById(R.id.layoutbase);
int screenWidth = layoutbase.getWidth();
int screenHeight = layoutbase.getHeight();
Log.i("MyActivity", "screenWidth: " + screenWidth + ", screenHeight: " +screenHeight);
Coordinates c = new Coordinates(BUTTONSIZE,screenWidth,screenHeight);
...some code ...
((ViewGroup) layoutbase ).addView(mybutton, new AbsoluteLayout.LayoutParams(BUTTONSIZE, BUTTONSIZE, c.mX, c.mY));
mybutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showText(mybutton);
}
});
}
public void showText(View button){
int x = findViewById(LAYOUT).getWidth();
int y = findViewById(LAYOUT).getHeight();
Toast message = Toast.makeText(this, "x: " + x , Toast.LENGTH_SHORT);
message.show();
}
getWidth()
命令在 showText()
中运行良好,但在 drawOval()
中不行 .我知道那里看起来有点不同,但我还在 drawOval()
中使用了 int x = findViewById(LAYOUT).getWidth();
版本,x/y 是总是 0
。我真的不明白为什么在早些时候似乎没有宽度/高度。即使我实际上在绝对布局上绘制了一个按钮,getWidth()
也会返回 0
。显然,我想在 drawOval()
中测量尺寸。
最佳答案
我想对你有帮助。
LinearLayout headerLayout = (LinearLayout)findviewbyid(R.id.headerLayout);
ViewTreeObserver observer = headerLayout .getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
int headerLayoutHeight= headerLayout.getHeight();
int headerLayoutWidth = headerLayout.getWidth();
headerLayout .getViewTreeObserver().removeGlobalOnLayoutListener(
this);
}
});
}
关于android - 在 Android 中获取布局的宽度/高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8885650/