Мне интересно, как измерить размеры вида.В моем случае это абсолютный макет.Я прочитал ответы на эти вопросы, но все еще не получил его.
Это мой код:
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()
.Я знаю, что это выглядит немного по-другому, но я также использовал int x = findViewById(LAYOUT).getWidth();
версию в drawOval()
, и x / y всегда 0
.Я не очень понимаю, почему в этой более ранней точке, кажется, нет ширины / высоты.Даже если я на самом деле нарисую кнопку на абсолютном макете, getWidth()
вернет 0
.Очевидно, я хочу измерить размеры в drawOval()
.