Cómo ajustar el tamaño de un ImageButton en Android

¿Hay alguna manera de hacer esto? He intentado rellenar la imagen y establecer la anchura / altura de la vista, pero ninguno parece funcionar. Aquí hay un ejemplo:

<ImageButton android:id="@+id/search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/search_small" android:paddingTop="4sp" android:paddingBottom="4sp" android:paddingLeft="6sp" android:paddingRight="6sp" android:layout_marginRight="10sp" android:layout_marginTop="6sp" android:layout_marginBottom="6sp" android:layout_alignParentRight="true" /> 

Quiero que el botón sea más ancho que alto, pero está saliendo al revés.

Sólo tenía una obra para tratar de entender su problema.

Parece que ImageButton es una vista compuesta que tiene unos pocos valores preestablecidos. Tal como algún tipo de margen que no puede anular con el XML. Si no puede cambiar su imagen para que coincida con lo que desea que suceda, entonces es mejor crear su propia vista compuesta.

Aquí está mi ejemplo de una vista compuesta que usted puede hacer usted mismo:

  <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/saveSearchButton" android:layout_width="50dp" android:layout_height="50dp" /> <ImageView android:layout_width="45dp" android:layout_height="45dp" android:scaleType="fitXY" android:src="@drawable/ic_menu_save" android:layout_gravity="center"/> </FrameLayout> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/clearSearchButton" android:layout_width="50dp" android:layout_height="50dp" /> <ImageView android:layout_width="45dp" android:layout_height="45dp" android:scaleType="fitXY" android:src="@drawable/ic_menu_close_clear_cancel" android:layout_gravity="center"/> </FrameLayout> 

Y los botones originales:

  <ImageButton android:id="@+id/imageButton1" android:src="@drawable/ic_menu_save" android:layout_height="45dp" android:layout_width="45dp"/> <ImageButton android:id="@+id/imageButton2" android:src="@drawable/ic_menu_close_clear_cancel" android:layout_height="45dp" android:layout_width="45dp"/> 

Aquí podemos ver la imagen personalizada / compuesto de botón seguido por la construcción en ImageButton como parte del SDK:

Ejemplo

Establecer android:background lugar de android:src para establecer la imagen en el botón. Esto ajustará la imagen al tamaño de su botón. A continuación, ajuste el relleno después.

Usted no debe utilizar sp como una dimensión de tamaño – dp debe ser utilizado, ya que ayudará a su escala de vista directamente con diferentes densidad de pantalla y resoluciones. Vea aquí para las dimensiones.

padding empujará otros elementos lejos de su límite de vista. margin empujará el contenido de su vista hacia adentro desde el límite de su (es decir, aplastaría el espacio disponible para su imagen). El límite se especifica por altura y anchura. Sin más información me imagino que están siendo confundidos por sus márgenes – eliminarlos y experimentar.

También es útil para usted: android:scaleType="fitXY" hace que la imagen se estire para que coincida con las dimensiones X e Y que están disponibles para él. Le ayuda a ver el lienzo disponible para su imagen. Una vez que sienta que el área es lo suficientemente grande para una imagen correctamente escalada, cambie el tipo de escala a centerInside. Consulte Aquí para todos los tipos de escala.

minWidth atributos minWidth y minWidth , combinados con un tipo de escala fitXY y envolviendo su contenido para modular la forma de mi botón.

Usted quiere hacer que su botón "más amplio", por ejemplo, la impresión de un botón de 200X100 fuera de un icono cuadrado, se podría establecer así:

 <ImageButton android:id="@+id/fooButton" android:src="@drawable/play_button" android:backgroundTint="#00000000" android:minWidth="200" android:minHeight="100" android:scaleType="fitXY" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="playStuff" /> 

Introduzca aquí la descripción de la imagen

¿Puedes explicar tu pregunta más ampliamente para que podamos entender mejor?

Según mi entendimiento Usted desea fijar su altura / anchura de ImageButton. Pero no funciona ¿verdad? Quiero preguntarle eso, si usted escribe cualquier altura / anchura específica entonces también no trabaja?

Copié su código en mis archivos y cambié la altura / anchura manualmente entonces trabajará.

Por favor explique su pregunta.

Gracias.

Terminé el diseño siguiendo la respuesta de Graeme. Cuatro "imageButton" fijan el fondo, el mismo ancho, tamaño de imagen cambiable. ¡Gracias!

  <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:background="@color/#000" android:weightSum="100" > <FrameLayout android:id="@+id/flBottom1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="25" > <Button android:id="@+id/ibBottom1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/detail_tab_bg_selector"/> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:scaleType="fitXY" android:src="@drawable/icon_home_48_48" android:layout_gravity="center_horizontal" android:layout_marginTop="5dp" /> <TextView android:id="@+id/tvBottom1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:layout_marginTop="35dp" android:text="@string/bailty_text_home" style="@style/bailtyTextBottom" /> </FrameLayout> <FrameLayout android:id="@+id/flBottom2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="25" > <Button android:id="@+id/ibBottom2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/detail_tab_bg_selector"/> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:scaleType="fitXY" android:src="@drawable/icon_compose_48_48" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/tvBottom2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:layout_marginTop="35dp" android:text="@string/bailty_text_comment" style="@style/bailtyTextBottom" /> </FrameLayout> <FrameLayout android:id="@+id/flBottom3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="25" > <Button android:id="@+id/ibBottom3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/detail_tab_bg_selector"/> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:scaleType="fitXY" android:src="@drawable/icon_search_48_48" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/tvBottom3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:layout_marginTop="35dp" android:text="@string/bailty_text_search" style="@style/bailtyTextBottom" /> </FrameLayout> <FrameLayout android:id="@+id/flBottom4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="25" > <Button android:id="@+id/ibBottom4" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/detail_tab_bg_selector"/> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:scaleType="fitXY" android:src="@drawable/icon_barcode_48_48" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/tvBottom4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:layout_marginTop="35dp" android:text="@string/bailty_text_scan_again" style="@style/bailtyTextBottom" /> </FrameLayout> </LinearLayout> 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.