Je ne sais pas si quelqu'un est encore la lecture de ce thread ou pas, mais Jeff solution ne fera que vous obtenez à mi-chemin (un peu littéralement). Ce que son onMeasure va faire, c'est afficher la moitié de l'image dans la moitié de la mère. Le problème, c'est que l'appel à super.onMeasure avant l' setMeasuredDimension
permettra de mesurer tous les enfants dans la vue en fonction de la taille originale, puis il suffit de couper la vue de moitié lorsque l' setMeasuredDimension
redimensionnée.
Au lieu de cela, vous devez appeler setMeasuredDimension
(pour un onMeasure remplacer) et de fournir un nouveau LayoutParams
de votre point de vue, alors appelez super.onMeasure
. Rappelez-vous, votre LayoutParams
sont dérivées à partir de votre point de vue du type parent, pas votre point de vue.
@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);
}
Je crois que la seule fois où vous aurez des problèmes avec le parent LayoutParams
si le parent est un AbsoluteLayout
(qui est obsolète mais encore parfois utile).