Получение ширины/высоты макета в Android

Мне интересно, как измерить размеры представления. В моем случае это Absolute Layout. Я прочитал ответы на эти вопросы, но так и не понял.

Вот мой код:

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().

9
задан Vadim Kotov 26 December 2018 в 15:51
поделиться