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.
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