getWidth () retorna 0 se definido por android: layout_width = “match_parent”

Eu tenho uma classe chamada FractalView que estende o ImageView. Meu objetivo é desenhar um fractal com essa classe que tenha o tamanho de toda a tela. É a única Visualização no arquivo de layout da minha atividade, além do LinearLayout de nível superior:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
    android:background="#FFFFFFFF">

    <com.antonc.fractal_wallpaper.FractalView
        android:id="@+id/fractal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"/>
</LinearLayout>

Como você pode ver, estou usando "match_parent" para layout_width e layout_height do FractalView e do LinearLayout. Neste ponto, eu assumi que o tamanho do FractalView é definido para um determinado valor, já que é compatível com o pai, que é compatível com o pai (que é a tela inteira). Então eu tento detectar o tamanho que está disponível para o FractalView usando getWidth () e getHeight ():

public class FractalView extends ImageView {

private Context mContext;
private Handler mHandler;

private int mScrWidth;
private int mScrHeight;

public FractalView(Context context) {
    super(context);
    mContext = context;
    init();
}

private void init() {

    mScrWidth = getWidth();
    mScrHeight = getHeight();
    // Breakpoint
}

@Override
protected void onDraw(Canvas canvas) {
    [...]
}

}

Mas quando meu código atinge o ponto de interrupção, o depurador mostra que mScrWidth e mScrHeight são zero. Eu tentei usar getMeasuredWidth () e getMaxWidth (), mas eles também retornam valores incorretos. Li várias respostas a perguntas semelhantes, por exemploeste e todos eles explicam que getWidth () retorna o tamanho de uma imagemdepois de ele foi desenhado, enquanto o que eu realmente preciso é a largura da área que está disponível para essa visão,antes Eu começo a desenhar.

Existe uma maneira de recuperar esses valores para largura e altura?

questionAnswers(2)

yourAnswerToTheQuestion