154 votes

Android définit la hauteur et la largeur de la vue personnalisée de manière programmatique

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 une fenêtre à onglets en utilisant addview() . Il fonctionne correctement. Maintenant, je veux définir la hauteur et la largeur de l'élément GraphView . Comment faire ?

228voto

Eric Nordvik Points 6975

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

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

182voto

Dalmas Points 13600

Si vous connaissez la taille exacte de la vue, il vous suffit d'utiliser setLayoutParams() :

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

Ou en Kotlin :

graphView.layoutParams = LayoutParams(width, height)

Toutefois, si vous avez besoin d'une approche plus souple, vous pouvez ignorer l'option onMeasure() pour mesurer la vue plus précisément en fonction de l'espace disponible et des contraintes de mise en page ( wrap_content , match_parent ou une taille fixe). Vous pouvez trouver plus de détails sur onMeasure() en el Documents sur Android .

89voto

Rakshi Points 2207

Vous pouvez définir la hauteur et la largeur d'une vue dans une disposition relative comme suit

ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = 130;
view.setLayoutParams(params);

23voto

gundrabur Points 11

En Kotlin, vous pouvez définir la largeur et la hauteur de n'importe quelle vue directement en utilisant leurs propriétés virtuelles :

someView.layoutParams.width = 100
someView.layoutParams.height = 200

5voto

Adib Faramarzi Points 1189

Si vous utilisez Kotlin, vous pouvez également utiliser le code suivant qui applique votre lambda donné sur les paramètres de mise en page actuels :

someView.updateLayoutParams {
    height = 200
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X