Android – Hauteur / Largeur maximum d’une vue – maxHeight / maxWidth view

Pour optimiser l’affichage d’un des écrans de Scores Keeper, je voulais pouvoir fixer une hauteur maximum à l’un de mes listes. Or, s’il est possible de fixer une taille minimum avec les attributs minHeight et minWidth, les attributs maxHeight et maxWidth n’existent pas ! Pour résoudre ce problème, j’ai utilisé la méthode onSizeChanged présente dans tout objet View et ai redimensionné cet objet si nécessaire :

public class MyView extends View {

	public MyView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public MyView(Context context) {
		super(context);
	}

	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh) {
		int maxHeight = ...;

		if (h > maxHeight) {
			super.onSizeChanged(w, maxHeight, oldw, oldh);
			LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, maxHeight);
			setLayoutParams(layoutParams);
		} else {
			super.onSizeChanged(w, h, oldw, oldh);
		}
	}
}

Il suffit de remplacer les par tous les calculs scientifiques possibles inimaginables ou simplement une taille en pixels 🙂 Il est bien sûr possible d’appliquer la même méthode pour la largeur. Ce n’est peut être pas une méthode très optimisée question performance car cela demande au système de dessiner les vues deux fois, mais ça a le mérite de bien marcher. Si vous avez une meilleure idée je suis preneur 🙂

Pour ScoresKeeper, j’ai pu fixer une taille maximum à la liste des participants en fonction de la hauteur de l’écran :

Publicités

Étiquettes : , , , , , ,

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :