2010-07-23 14 views
22

¿Alguien me puede decir cómo cambiar el tamaño del botón imageButton para ajustarse exactamente a la imagen ... Este es el código que probé, pero la imagen se coloca en la posición que estoy localizando usando android:scaleType pero no puedo capaz de reducir el tamaño de ImageButton, pls que me ayude a rectificar este problema ... el código que he intentado es ...ImageButton en 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

¿Qué quiere lograr exactamente? ¿podrías hacer un esquema o algo así en Paint/Gimp y mostrarnos? porque realmente no veo lo que quieres ver. thx – Sephy

+0

Hola Saphy ,, Gracias por tu respuesta, mi duda es cómo cambiar el tamaño del botón image en Android, si es posible por favor muéstrame con un fragmento –

+0

No entiendo lo que quieres decir sobre el cambio de tamaño ... – Sephy

Respuesta

3

usted está probablemente va a tener que cambiar el tamaño del botón de programación. Tendrá que cargar explícitamente la imagen en su método onCreate(), y cambiar el tamaño del botón de ahí:

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()); 
    ... 
} 

No está garantizado para trabajar, de acuerdo con las especificaciones para setMinimumX (ya que la anchura y la altura son todavía dependientes en la vista principal), pero debería funcionar bastante bien para casi cualquier situación.

10

se está ajustando la imagen con la propiedad "src"

android:src="@drawable/eye"> 

uso "background" propiedad lugar "src" propiedad:

android:background="@drawable/eye" 

como:

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

funciona de forma automática.

android:src="@drawable/eye" 

era lo que hacía con todos los problemas de cambiar el tamaño de la imagen de la anchura y la altura del botón ...

+0

tu rock. ¡gracias! me ahorró un montón de tiempo. –

2

intenta utilizar ScaleType centerInside.

Los ScaleTypes no se representan correctamente en el diseñador de Eclipse Layout, por lo que debe probarlos en la aplicación en ejecución.

2

¿Intentó dar el layout_width y el layout_height como el siguiente? Como está configurando con wrap_content, el botón de imagen se expande al tamaño de la altura y el ancho de la imagen de origen.

<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

También puede establecer el fondo es transparente. Así que el botón parece ajustarse a tu ícono.

<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

¿No es mejor simplemente configurar su dibujable como android: fondo? De esa forma, no necesitarías tanto Android: background AND android: src. –

0

Creo que ya ha resuelto este problema, y ​​como otras respuestas sugeridas

android:background="@drawable/eye" 

está disponible. Pero prefiero

android:src="@drawable/eye" 
android:background="00000000" // transparent 

y funciona bien también. (Por supuesto ex código se establecerá imagen como fondo y el otro va a establecer una imagen como una imagen), pero de acuerdo a su respuesta seleccionada, supongo que quería decir 9- parche.

2

Usted no tiene que usarlo usando atributo src

manera incorrecta (La imagen no encaja en el botón)

android:src="@drawable/myimage" 

camino correcto es utilizar a fondo atttribute

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

donde piel es 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> 

usando button_pressed.png y button_normal.png

Esto también le ayudará en la creación de su botón de piel con 4 estados de prensado, normal, discapacitados y centrado. Asegúrese de guardar los mismos tamaños de todos los pngs

Cuestiones relacionadas