Quelqu'un peut-il me dire comment redimensionner l'imageButton pour adapter l'image exactement..C'est le code que j'ai essayé, mais l'image est placée à la position que je recherche en utilisant Android:scaleType
mais je ne peux pas réduire le taille de imageButton, les pls m'aident à rectifier ce problème ... Le code que j'ai essayé est ...
<ImageButton>
Android:id="@+id/Button01"
Android:scaleType="fitXY" // i have tried all the values for this attr
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:cropToPadding="false"
Android:paddingLeft="10dp"
Android:src="@drawable/eye"> // this is the image(eye)
</ImageButton>
Un peu en retard, mais je me trompe tous pour 'mieux tard que jamais' J'avais la même question aujourd'hui, je l'ai trouvée expliquée ici: http://www.anddev.org/tutorial_buttons_with_niceley_stretched_background-t4369.html
Android:background="@drawable/eye"
fonctionne automatiquement.
Android:src="@drawable/eye"
c’était ce que j’utilisais avec tous les problèmes de redimensionnement de l’image la largeur et la hauteur du bouton ...
vous définissez l'image avec la propriété "src"
Android:src="@drawable/eye">
utilisez la propriété "background
" à la place de "src
":
Android:background="@drawable/eye"
comme:
<ImageButton
Android:id="@+id/Button01"
Android:scaleType="fitXY"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:cropToPadding="false"
Android:paddingLeft="10dp"
Android:background="@drawable/eye"> // this is the image(eye)
</ImageButton>
Vous devrez probablement redimensionner le bouton par programme. Vous devez explicitement charger l'image dans votre méthode onCreate () et redimensionner le bouton à cet endroit:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageButton myButton = (ImageButton) findViewById(R.id.button);
Bitmap image = BitmapFactory.decodeResource(R.drawable.eye);
myButton.setBitmap(image);
myButton.setMinimumWidth(image.getWidth());
myButton.setMinimumHeight(image.getHeight());
...
}
Il n’est pas garanti que cela fonctionne, selon les spécifications de setMinimumX (puisque la largeur et la hauteur dépendent toujours de la vue parent), mais cela devrait fonctionner assez bien dans presque toutes les situations.
Vous n'êtes pas obligé de l'utiliser avec l'attribut src
Mauvaise façon (l'image ne correspond pas au bouton)
Android:src="@drawable/myimage"
La bonne façon est d'utiliser l'attribut d'arrière-plan
<ImageButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:background="@drawable/skin" />
où skin est un xml
skin.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<!-- <item Android:drawable="@drawable/button_disabled" Android:state_enabled="false"/> -->
<item Android:drawable="@drawable/button_pressed" Android:state_pressed="true"/>
<!-- <item Android:drawable="@drawable/button_focused" Android:state_focused="true"/> -->
<item Android:drawable="@drawable/button_normal"/>
</selector>
using button_pressed.png et button_normal.png
Cela vous aidera également à créer votre bouton skinné avec 4 états: pressé, normal, désactivé et concentré.
Avez-vous essayé de donner les propriétés layout_width et layout_height comme suit? Puisque vous définissez avec wrap_content, le bouton image s’agrandit à la taille de la hauteur et de la largeur de l’image source.
<blink>
<ImageButton>
Android:id="@+id/Button01"
Android:scaleType="fitXY"
Android:layout_width="80dip"
Android:layout_height="80dip"
Android:cropToPadding="false"
Android:paddingLeft="10dp"
Android:src="@drawable/eye">
</ImageButton>
</blink>
Essayez d'utiliser ScaleType centerInside.
Les ScaleTypes ne sont pas correctement restitués dans Eclipse Layout Designer, alors testez-les dans votre application en cours d'exécution.
Vous pouvez également définir l'arrière-plan est transparent. Le bouton ressemble donc à votre icône.
<ImageButton
Android:id="@+id/Button01"
Android:scaleType="fitcenter"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:cropToPadding="false"
Android:paddingLeft="10dp"
Android:background="@Android:color/transparent"
Android:src="@drawable/eye" />
Je pense que vous avez déjà résolu ce problème, et comme d'autres réponses suggérées
Android:background="@drawable/eye"
est disponible. Mais je préfère
Android:src="@drawable/eye"
Android:background="00000000" // transparent
et cela fonctionne bien aussi (bien sûr, l'ancien code définira l'image en tant qu'arrière-plan et l'autre définira l'image en tant qu'image).