texto - Ajustar imagen en ImageButton en Android
imagebutton android studio (7)
Quiero que cubran el 75% del área del botón.
Use android:padding="20dp"
(ajuste el relleno según sea necesario) para controlar cuánto ocupa la imagen del botón.
pero mientras algunas imágenes cubren menos área, algunas son demasiado grandes para caber en el imageButton. ¿Cómo cambiar el tamaño programáticamente y mostrarlos?
Utilice un android:scaleType="fitCenter"
para que Android android:scaleType="fitCenter"
las imágenes, y android:adjustViewBounds="true"
para que ajusten sus límites debido a la escala.
Todos estos atributos se pueden establecer en código en cada ImageView
en tiempo de ejecución. Sin embargo, es mucho más fácil de configurar y previsualizar en xml en mi opinión.
Además, no use sp
para nada que no sea el tamaño del texto, se escala según la preferencia de tamaño de texto que establezca el usuario, por lo que sus dimensiones sp
serán más grandes de lo previsto si el usuario tiene una configuración de texto "grande". Use dp
lugar, ya que no está escalado por la preferencia de tamaño de texto del usuario.
Aquí hay un fragmento de cómo debe verse cada botón:
<ImageButton
android:id="@+id/button_topleft"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_marginTop="0dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="20dp"
android:scaleType="fitCenter" />
Tengo 6 ImageButton en mi actividad, establecí imágenes a través de mi código en ellas (sin usar xml).
Quiero que cubran el 75% del área del botón. Pero cuando algunas imágenes cubren menos área, algunas son demasiado grandes para caber en el imageButton. ¿Cómo cambiar el tamaño programáticamente y mostrarlos? Debajo está la captura de pantalla
a continuación está el archivo xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp" >
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_topleft"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_topright"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_repeat"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_next"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_bottomleft"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_bottomright"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
</LinearLayout>
y un fragmento de myClass.java:
public void addImageButtons()
{
iB_topleft = (ImageButton) findViewById(R.id.button_topleft);
iB_topright = (ImageButton) findViewById(R.id.button_topright);
iB_bottomleft = (ImageButton) findViewById(R.id.button_bottomleft);
iB_bottomright = (ImageButton) findViewById(R.id.button_bottomright);
iB_next = (ImageButton) findViewById(R.id.button_next);
iB_repeat = (ImageButton) findViewById(R.id.button_repeat);
}
public void setImageNextAndRepeat()
{
iB_topleft .setImageResource(R.drawable.aa);
iB_topright.setImageResource(R.drawable.bb);
iB_bottomleft.setImageResource(R.drawable.cc);
iB_bottomright.setImageResource(R.drawable.dd);
iB_next.setImageResource(R.drawable.next);
iB_repeat.setImageResource(R.drawable.repeat);
}
Consulte el enlace a continuación e intente encontrar lo que realmente desea:
ImageView.ScaleType CENTER Centre la imagen en la vista, pero no realice escalas.
ImageView.ScaleType CENTER_CROP Escale la imagen de manera uniforme (mantenga la relación de aspecto de la imagen) para que ambas dimensiones (ancho y alto) de la imagen sean iguales o mayores que la dimensión correspondiente de la vista (menos relleno).
ImageView.ScaleType CENTER_INSIDE Escale la imagen de manera uniforme (mantenga la relación de aspecto de la imagen) para que ambas dimensiones (ancho y alto) de la imagen sean iguales o menores que la dimensión correspondiente de la vista (menos relleno).
ImageView.ScaleType FIT_CENTER Escala la imagen usando CENTER.
ImageView.ScaleType FIT_END Escala la imagen usando END.
ImageView.ScaleType FIT_START Escala la imagen usando START.
ImageView.ScaleType FIT_XY Escala la imagen usando FILL.
ImageView.ScaleType MATRIX Scale usando la matriz de imagen al dibujar.
https://developer.android.com/reference/android/widget/ImageView.ScaleType.html
Estoy usando android:scaleType="fitCenter"
con satisfacción.
Estoy usando el siguiente código en xml
android:adjustViewBounds="true"
android:scaleType="centerInside"
Funcionó bien en mi caso. Primero, descarga una imagen y la renombra como icono, la ubica en la carpeta dibujable. Puede cambiar el tamaño configurando android:layout_width
o android:layout_height
. Finalmente, tenemos
<ImageButton
android:id="@+id/answercall"
android:layout_width="120dp"
android:layout_height="80dp"
android:src="@drawable/iconimage"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:scaleType="fitCenter" />
Intenta usar android:scaleType="fitXY"
en i-Imagebutton xml
Recientemente, descubrí por accidente que, dado que tienes más control en un ImageView que puedes configurar un onclicklistener para una imagen, aquí hay una muestra de un botón de imagen creado dinámicamente
private int id;
private bitmap bmp;
LinearLayout.LayoutParams familyimagelayout = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT );
final ImageView familyimage = new ImageView(this);
familyimage.setBackground(null);
familyimage.setImageBitmap(bmp);
familyimage.setScaleType(ImageView.ScaleType.FIT_START);
familyimage.setAdjustViewBounds(true);
familyimage.setId(id);
familyimage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//what you want to do put here
}
});