Wie kann onMeasure () richtig überschrieben werden? Ich habe verschiedene Ansätze gesehen. Beispielsweise verwendet die professionelle Android-Entwicklung MeasureSpec, um die Abmessungen zu berechnen, und endet dann mit einem Aufruf von setMeasuredDimension (). Beispielsweise:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
Auf der anderen Seite besteht gemäß diesem Beitrag die "richtige" Methode darin, MeasureSpec zu verwenden, setMeasuredDimensions () aufzurufen, gefolgt von einem Aufruf von setLayoutParams (), und mit einem Aufruf von super.onMeasure () zu enden. Beispielsweise:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight));
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
Welches ist der richtige Weg? Keiner der beiden Ansätze hat bei mir zu 100% funktioniert.
Ich denke wirklich, was ich frage, ist, dass jemand ein Tutorial kennt, das onMeasure (), Layout, Abmessungen von untergeordneten Ansichten usw. erklärt?