L'ordre des opérations dans le constructeur ImageView
(see source here) parse sur et définit la propriété adjustViewBounds
de XML avant qu'il analyse et définit l'attribut scaleType
de XML. Une partie de la méthode setAdjustViewBounds()
(appelée par le constructeur avec votre valeur d'attribut XML) consiste à définir ScaleType
sur FIT_CENTER
lorsque la valeur est true.
Ainsi, lorsque le XML que vous avez envoyé chargé, le ScaleType
est d'abord mis à FIT_CENTER
puis redéfinis sur MATRIX
après, tout à l'intérieur du constructeur. Comparez cela avec votre exemple d'appel setAdjustViewBounds()
en Java à la place, et maintenant la dernière ScaleType
sera FIT_CENTER
car votre appel Java se produira après l'analyse des attributs XML (ce qui signifie que votre attribut android:scaleType="matrix"
est ignoré. entre "fonctionne" et "ne fonctionne pas"
Je ne sais pas si Google appellerait cela un bug, car ils ne font que définir le ScaleType
à ce qu'ils pensent que vous voulez pour préserver l'aspect, Les limites de la vue elles-mêmes changeront quand même, comme le nom de la propriété l'indique, l'image peut simplement se cliper d'une manière inattendue. Les documents pourraient probablement être plus clair sur cette « fonctionnalité », donc vous pouvez déposer un rapport de bogue à http://b.android.com
HTH
Voir ce SO enfilez peut vous aider à http://stackoverflow.com/ questions/7719617/imageview-adjustviewbounds-not-working –