Quelle est la manière correcte de remplacer onMeasure() ? J'ai vu différentes approches. Par exemple, Développement professionnel d'Android utilise MeasureSpec pour calculer les dimensions, puis se termine par un appel à setMeasuredDimension(). Par exemple :
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
D'autre part, selon ce poste La méthode "correcte" consiste à utiliser MeasureSpec et à appeler setMeasuredDimensions(), suivi par un appel à setLayoutParams(), et se terminant par un appel à super.onMeasure(). Par exemple :
@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);
}
Alors, quelle est la bonne méthode ? Aucune des deux approches n'a fonctionné à 100% pour moi.
Je suppose que ce que je demande vraiment, c'est si quelqu'un connaît un tutoriel qui explique onMeasure(), la disposition, les dimensions des vues enfant, etc.
17 votes
Avez-vous trouvé la réponse utile/ correcte ? pourquoi ne pas l'indiquer comme suit le site réponse ?