J'ai trouvé ce grand fil de discussion décrivant comment «manger le gâteau et l'avoir aussi», c'est-à-dire utiliser l'image pour un Button
au lieu de ImageButton
(ce qui ne permet pas SetText()
, le redimensionnement, etc.).
Ceci est réalisé en utilisant l'attribut View:
android:background="@drawable/bgimage"
Le seul problème avec cela est que cela étire l'image pour l'adapter à la taille du bouton.
À moins de coder en dur une taille de bouton fixe (en pixels!), Existe-t-il un moyen de dire à Android de ne pas étirer du tout l'image d'arrière-plan et de la recadrer ou de la remplir?
la source
ImageView
semble intéressant. Je l' ai remarqué a un attribut qui est pasButton
:android:cropToPadding
. Cela ne me dérange pas d'utiliser un ImageView à la place, tant qu'il en asetOnClickListener()
, ce qu'il fait. Que vais-je perdre en passant deButton
àImageView
?setDrawableResource
, puis assurez-vous qu'ilsetAdjustViewBounds
est défini sur trueVous pouvez créer un bitmap xml et l'utiliser comme arrière-plan de la vue. Pour éviter l'étirement, vous pouvez spécifier un
android:gravity
attribut.par exemple:
Il existe de nombreuses options que vous pouvez utiliser pour personnaliser le rendu de l'image
http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap
la source
Utiliser simplement
ImageButton
au lieu deButton
résout le problème.et vous pouvez définir
pour supprimer l'arrière-plan du bouton si vous le souhaitez.
Solution rapide !! :-)
la source
J'utilise un ImageView dans un RelativeLayout qui se superpose à ma mise en page normale. Aucun code requis. Il redimensionne l'image à la hauteur totale de l'écran (ou de toute autre disposition que vous utilisez), puis recadre l'image à gauche et à droite pour l'adapter à la largeur. Dans mon cas, si l'utilisateur tourne l'écran, l'image peut être un tout petit peu trop petite. Par conséquent, j'utilise match_parent, ce qui rendra l'image étirée en largeur si elle est trop petite.
la source
J'ai eu le même problème: vous ne devriez utiliser qu'une image à 9 patchs (.9.png) au lieu de votre image d'origine.
Serge
la source
Utilisez draw9patch ... inclus dans les outils SDK d'Android Studio. Vous pouvez définir les zones extensibles de votre image. Les parties importantes sont contraintes et l'image n'a pas l'air déformée. Une bonne démo sur dra9patch est ICI
Utilisez draw9patch pour changer votre splash.png existant en new_splash.9.png, faites glisser new_splash.9.png dans le dossier du projet drawable-hdpi assurez-vous que AndroidManifest et styles.xml sont corrects comme ci-dessous:
AndroidManifest.xml:
styles.xml:
la source
J'avais une image de fond, pas de grande taille, mais avec des dimensions étranges - donc l'étirement et les mauvaises performances. J'ai fait une méthode avec des paramètres Contexte, une vue et un ID dessinable (int) qui correspondra à la taille de l'écran de l'appareil. Utilisez ceci par exemple dans un Fragments onCreateView pour définir l'arrière-plan.
la source
Voici une version de la réponse de Santosh pour les boutons créés par programme, sans avoir besoin d'une configuration XML distincte:
J'ai inclus la ligne ColorFilter car cela fonctionne un peu différemment des boutons avec une image d'arrière-plan normale.
la source
Vous pouvez utiliser a
FrameLayout
avec unImageView
comme premier enfant, puis votre disposition normale comme deuxième enfant:la source
La clé est de définir le dessinable comme image du bouton, pas comme arrière-plan. Comme ça:
la source
On peut utiliser un simple ImageView dans son xml et le rendre cliquable (android: clickable = "true")? Vous n'avez qu'à utiliser comme src une image qui a été formée comme un bouton c'est à dire des coins arrondis.
la source