2010-11-16 5 views
11

l'androïde propriété: layout_gravity = "clip_vertical | horizontal" effectue les opérations suivantes comme mentionné dans la documentation sdk:Qu'est-ce que Android: layout_gravity = "clip_vertical" exactement

option supplémentaire qui peut être réglé sur ont la les bords supérieur et/ou inférieur de l'enfant a écrêté les limites de son conteneur. Le clip sera basé sur la gravité verticale : une gravité supérieure coupera le bord inférieur, une gravité inférieure coupera le bord supérieur, et aucune ne coupera les deux bords.

mais je ne vois rien de cela dans mes applications

alors quel est le but de cette propriété exactement?

grâce

Répondre

19

Version courte:

clip_horizontal et clip_vertical appliquent aux mesures de la vue lui-même, avant tout contenu (comme l'image dans un BitmapDrawable) sont rendus.


Version longue:

J'ai couru dans une certaine confusion sur la même clip_horizontal et clip_vertical. (Dans mon cas, il était lié à Android: gravité pour un bitmapDrawable, mais il est assez similaire pour être applicable.)

De la documentation je pensais que quelque chose comme android: gravity = "top | left | clip_vertical" sur un bitmap placerait le coin supérieur gauche de l'image au coin supérieur gauche de la vue et, si le bitmap était plus grand que la vue, il serait "coupé" en bas de la vue. En d'autres termes, montrez seulement le bitmap que la vue est suffisamment grande pour révéler; ne pas étirer le bitmap, mais plutôt montrer seulement ce qui va s'adapter, laissant le reste se prolonger au-dessous du bord inférieur. Cependant, le contraire s'est produit: lorsque j'ai défini clip_vertical, une grande image bitmap a été écrasée verticalement pour tenir dans la hauteur de la vue.

Après avoir examiné la méthode dans la plate-forme/cadres/core/java/android/view/Gravity.java, j'ai réalisé mon erreur applyDisplay():

Il n'est pas le bitmap l'image qui allait être découpé, mais afficher - la taille réelle du conteneur dans lequel l'image est finalement rendue.Dans mon cas, définir clip_vertical ne signifiait pas «couper l'image sur le bord inférieur», mais signifier «couper la vue de BitmapDrawable elle-même afin que sa hauteur corresponde à la hauteur de son conteneur parent» ... ce qui a provoqué l'image être "écrasé" car il remplissait cette hauteur plus courte.

Ainsi, la chose importante à retenir avec Android: la gravité et Android: layout_gravity est que clip_horizontal et clip_vertical appliquer aux mesures de la vue lui-même, avant tout contenu (comme mon BitmapDrawable) sont rendus.

+0

Merci pour votre explication! C'est comme si quelqu'un avait allumé une lumière dans un coin sombre de mes connaissances Android. À votre santé! – SlashG

0

Peut-être il n'y a pas d'effet parce horizontal n'est pas défini dans le android:layout_gravity. clip_vertical est juste une propriété supplémentaire utilisée en plus d'une propriété de base.

+0

Je suis désolé mais si je l'ai écrit comme: android: layout_gravity = "top | clip_vertical" Je ne vois toujours rien changé –

+0

Vous devez obtenir votre point de vue dans une situation où il serait effectivement clip. Généralement cela se produit lorsqu'il est utilisé avec le gestionnaire de fenêtres (quelles fenêtres vont couper avec l'écran, etc.). – hackbod

+0

Pouvez-vous expliquer plus? –

0

Indicateur permettant d'insérer les bords de l'objet dans son conteneur le long de l'axe horizontal.

check this