web-dev-qa-db-fra.com

Android définir la hauteur et la largeur de l'affichage personnalisé par programme

J'ai créé une vue personnalisée nommée Graphview. Voici la structure de la classe GraphView.

public class GraphView extends View {

    public GraphView(Context context, float[] values, String title, String[] horlabels, String[] verlabels, boolean type) {
        super(context);
                ........
   }

   ..................
   .................
}

J'ai ajouté la vue dans un tableau à l'aide de addview(). Cela fonctionne bien. Maintenant, je veux définir la hauteur et la largeur pour la GraphView. Comment faire ça?

111
dev_android

Le moyen le plus simple est de définir la taille par programme de la manière suivante:

graphView.setLayoutParams(new LayoutParams(width, height));

Cela convient si vous connaissez la taille exacte de la vue. Toutefois, si vous souhaitez une approche plus flexible, vous pouvez remplacer la méthode onMeasure() pour mesurer la vue plus précisément en fonction de l'espace disponible et des contraintes de présentation (wrap_content, match_parent ou une taille fixe).

Vous pouvez trouver un exemple sur la façon de remplacer onMeasure() en consultant l'exemple -Docs Android et LabelView dans votre répertoire SDK.

118
Dalmas

Vous pouvez définir la hauteur et la largeur comme ceci:

myGraphView.setLayoutParams(new LayoutParams(width, height));
205
Eric Nordvik

vous pouvez définir la hauteur et la largeur d'une vue dans une présentation relative comme celle-ci 

ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = 130;
view.setLayoutParams(params);
65
Rakshi
spin12.setLayoutParams(new LinearLayout.LayoutParams(200, 120));

spin12 est votre compteur et 200 , 120 est width et height pour votre spinner.

4
Ujjwal

Ceci est une version basée sur Kotlin, en supposant que la vue parente est une instance de LinearLayout.

someView.layoutParams = LinearLayout.LayoutParams(100, 200)

Cela permet de définir la largeur et la hauteur (100 et 200) sur une seule ligne.

0
Morgan Wilde