2010-07-23 14 views
22

Quelqu'un peut-il me dire comment redimensionner l'imageButton pour s'adapter à l'image exactement .. C'est le code que j'ai essayé, mais l'image est placée à la position que je suis en utilisant android:scaleType mais je ne peux pas capable de réduire la taille de ImageButton, pls me aider à rectifier ce problème ... le code que j'ai essayé est ...ImageButton dans Android

<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> 
+0

Que voulez-vous atteindre exactement? pourriez-vous faire un plan ou quelque chose comme ça sur la peinture/gimp et nous montrer? parce que je ne vois pas vraiment ce que vous voulez voir. thx – Sephy

+0

Salut Saphy ,, Thx pour votre réponse, mon doute est de savoir comment redimensionner l'imagebutton dans android, si possible pls me montrer avec un extrait –

+0

Je ne comprends pas ce que vous voulez dire sur le redimensionnement ... – Sephy

Répondre

4

Kinda en retard, mais je suis tout pour 'mieux tard alors jamais' j'avais le même question aujourd'hui, a trouvé expliqué ici: http://www.anddev.org/tutorial_buttons_with_niceley_stretched_background-t4369.html

+3

Ce lien me donne une erreur SQL pour le moment: "L'utilisateur d0066dc5 a déjà plus de connexions actives" max_user_connections "[1203]" –

+1

Les réponses avec seulement un lien sont déconseillées pour cette raison. – Diti

3

Vous allez probablement devoir redimensionner le bouton programme. Vous aurez besoin de charger explicitement l'image dans votre méthode onCreate() et redimensionnez le bouton là:

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 est pas garanti, selon le cahier des charges pour setMinimumX (puisque la largeur et la hauteur sont encore dépendantes sur la vue des parents), mais cela devrait plutôt bien fonctionner pour presque toutes les situations.

10

vous définissez l'image avec la propriété "src"

android:src="@drawable/eye"> 

utilisation "background" propriété au lieu "src" propriété:

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> 
29
android:background="@drawable/eye" 

fonctionne automatiquement.

android:src="@drawable/eye" 

était ce que je faisais avec tous les problèmes de redimensionnement de l'image la hauteur et la largeur du bouton ...

+0

vous rock. Je vous remercie! m'a sauvé un tas de temps. –

2

Essayez d'utiliser ScaleType centerInside. ScaleTypes ne sont pas rendus correctement dans le concepteur Eclipse Layout, donc tester dans votre application en cours d'exécution.

2

Avez-vous essayé de donner à layout_width et layout_height les caractéristiques suivantes? Comme vous définissez wrap_content, le bouton d'image s'étend à la taille et à 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> 
1

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" /> 
+0

N'est-il pas préférable de simplement définir votre dessin comme android: arrière-plan? De cette façon, vous n'auriez pas besoin à la fois android: fond AND android: src. –

0

Je pense que vous avez déjà résolu ce problème, et que 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 il fonctionne bien aussi. (Bien sûr ancien code sera mis en image en arrière-plan et l'autre définira l'image comme une image), mais en fonction de votre réponse choisie, je suppose que vous vouliez dire 9- pièce.

2

Vous ne devez pas utiliser à l'aide de l'attribut src

Wrong way (L'image ne correspondront pas au bouton)

android:src="@drawable/myimage" 

droit chemin est d'utiliser atttribute fond

<ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:background="@drawable/skin" /> 

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

utilisant button_pressed.png et button_normal.png

Cela permettra également vous aider à créer votre peau avec le bouton 4 états de pressé, normal, handicapés et ciblée. Assurez-vous de garder la même taille de tous les pngs