Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android ImageButton – determina qué recurso está configurado actualmente

¿Hay alguna manera de encontrar qué recurso está configurado un determinado ImageButton, en un momento dado?

Por ejemplo: Tengo un ImageButton que establezco en R.drawable.btn_on onCreate. Posteriormente, en algún momento, ImageButton se establece en R.drawable.btn_off . Quiero poder comprobar qué recurso el ImageButton se fija a en mi código.

  • Proyecto de actualización de Android-Studio con cambios de build.gradle
  • Compra en la aplicación de Android de una suscripción con una versión de prueba gratuita - ¿cómo evitar el abuso?
  • Biblioteca Qt C ++ en Android Proyecto Eclipse: controlador QSQLITE no cargado
  • FFMpeg en Android, referencias indefinidas a las funciones de libavcodec, aunque aparece en la línea de comandos
  • Cómo reemplazar completamente listView / GridView con RecyclerView?
  • Transición de elementos compartidos no funciona
  • Gracias Chris

  • SearchView Expandir / contraer la animación en Android
  • ¿Cómo cambio la vista dentro de un fragmento?
  • ¿Cómo puedo script genymotion emulador para lanzar un determinado avd, sin cabeza?
  • Android AppCompat requiere el nivel 11 de API
  • ¿Cómo configuro una imagen de fondo de ListView vacía?
  • Certificado auto-firmado de Android: Ancla de confianza para la ruta de certificación no encontrada
  • 4 Solutions collect form web for “Android ImageButton – determina qué recurso está configurado actualmente”

    Sólo use setTag() y getTag() para asociar y recuperar datos personalizados para ImageView .

    Puede definir su propia clase como un hijo de ImageButton , agregar una variable int privada y establecerla cuando se setImageResource(int) . Algo como:

     public class MyImageButton extends ImageButton { private int mImageResource = 0; @Override public void setImageResource (int resId) { mImageResource = resId; super.setImageResource(resId); } public int getImageResource() { return mImageResource; } } 

    No lo probé, pero usted consigue la idea – entonces usted puede llamar a getImageResource () en su botón, asumiendo que se ha fijado previamente con setImageResource ().

    No sé cómo acceder al recurso directamente, pero para lo que intenta lograr, no sería suficiente para obtener el estado?

      ImageButton btn = (ImageButton) findViewById(R.id.btn); int [] states = btn.getDrawableState(); for (int i : states) { if (i == android.R.attr.state_pressed) { Log.v("btn", "Button in pressed state"); } } 

    http://developer.android.com/reference/android/R.attr.html#state_pressed

    La documentación de los documentos Android es incorrecta. Aquí se indica que pickDropPoint.getDrawableState()[android.R.attr.state_pressed] devuelve true o false , pero en su lugar devuelve 1 o 0 , un **int** .

    Tuve que hacer lo siguiente para que funcionara

      <ImageButton android:id="@+id/pickDropPoint" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="6" android:background="#EEeeeee4" android:contentDescription="pick or drop point" android:src="@drawable/pickupdrop" /> 

    El xml extraíble para el tacto prensado

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:src="@drawable/start32" android:state_pressed="true"/> <item android:src="@drawable/end32" android:state_pressed="false"/> <corners android:bottomLeftRadius="3dp" android:bottomRightRadius="3dp" android:topLeftRadius="3dp" android:topRightRadius="3dp" /> </selector> 

    En código, no necesita el bucle for como lo sugiere @slup

     whichPoint = (pickDropPoint.getDrawableState()[android.R.attr.state_pressed] > 1 ? PICKUP : DROP); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.