ImageButton con diferentes estados tamaño de las imágenes
¿Cómo puedo evitar que un ImageButton
tenga un tamaño fijo? Los dibujos utilizados en el selector tienen diferentes tamaños, y quiero que el ImageButton
para cambiar el tamaño de sí mismo para que coincida con el tamaño de la imagen.
He intentado adjustViewBounds
sin éxito.
- Creación de Imagebutton mediante programación
- Utilizar la misma ID para varios botones
- No se puede resolver drawable en el atributo "src"
- Cómo colocar el botón en el interior del texto de edición
- animar ImageButton en android?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="8dp" > <ImageButton android:id="@+id/picture_imagebutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:src="@drawable/tab_background_selector" /> </RelativeLayout>
- Aplicar diseño de material táctil ondulación a ImageButton?
- ¿Cómo hacer que los límites de ImageButtons rodeen la imagen?
- Gridview con diseño (imageview + imagebutton) para cada valor
- Cómo usar setImageUri () en Android
- ImageButton mediante Transitions en Android
- Android ImageButton setImageResource de la variable
- ¿Cómo mantengo la relación de aspecto en los botones de imagen en android?
- Ajustar imagen en ImageButton en Android
En lugar de utilizar ImageButton
, utilice ImageView
porque ImageButton
no puede ImageButton
tamaño en base a ImageSize
. ImageView
es la mejor manera alternativa que puedo sugerir para su problema. Consigue esto por la siguiente manera:
Layout.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/image_selection"/> </RelativeLayout>
Image_selection.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/default_image"/> //default_image.png is displayed when the Activity loads. <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/default_image_hover" /> //default_image_hover.png is an image displaed during Onclick of ImageView <item android:state_focused="true" android:drawable="@drawable/default_image_hover" /> <item android:state_focused="false" android:drawable="@drawable/default_image"/> </selector>
SampleActivity.java:
ImageView myImage= (ImageView)findViewById(R.id.image); myImage.setOnClickListener(this);
Como ya sabes, no hay una manera fácil de establecer drawables en un selector, y no creo que haya una solución basada en XML para tu problema. Prueba esto.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageButton android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/default_image" android:contentDescription="@null"/> </RelativeLayout>
A continuación, debe agregar este código a onCreate o onResume
final ImageButton button = (ImageButton) findViewById(R.id.button); button.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) button.setImageDrawable(getResources().getDrawable(getResources().getIdentifier("pressed_image", "drawable", getPackageName()))); else if(event.getAction() == MotionEvent.ACTION_UP) button.setImageDrawable(getResources().getDrawable(getResources().getIdentifier("default_image", "drawable", getPackageName()))); return false; } });
No utilice un ImageButton, simplemente utilice Image y suminístrelo con un método onClick
Tratar
android:background="@drawable/tab_background_selector"
Insted de
android:src="@drawable/tab_background_selector"
Espero que ayude.
Como otros han mencionado, usted será el mejor de usar un ImageView
pues ajustará su altura. Establezca la propiedad setClickable
para usarla como un botón. También intercambie su RelativeLayout
por un LinearLayout
, esto envolverá su altura a su ImageButton
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="8dp" > <ImageView android:id="@+id/picture_imagebutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:setClickable="true" android:src="@drawable/tab_background_selector" /> </LinearLayout>
Alternativamente, puede hacer clic en el LinearLayout
y agregar un recurso de fondo (transparente cuando no se hace clic, coloreado cuando se hace clic) para actuar como selector.
Puede utilizar estilos y establecer diferentes estilos basados en el estado de ImageBUtton. Debido a que los estilos de apoyo de fondo, tamaño y muchas otras propiedades que le ayuda a obtener un control total de estilo dependiendo del problema a mano.
- Se abre Multiple PlaceAutoCompleteFragment cuando se hace clic en él muy rápidamente
- Transformación de los datos del acelerómetro de las coordenadas del dispositivo a las coordenadas del mundo real