Il faut jouer avec les flags de resize de ton ImageView (donc utiliser une ImageView, et non un bouton, 'façon, un Button, c'est un TextView).
adjustViewBound, cropToPadding et scaleType me semblent de bonnes pistes. Ca fait très longtemps que je n'ai pas fait mumuse avec le resize... il est aussi tout a fait possible que tu sois obligé de changer l'image que l'utilisateur rentre pour :
- respecter les contraintes de mémoire d'Android
- la retailler
- la conserver
- l'adapter