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.

Gracias Chris

  • Ningún paquete conocido al obtener valor para el número de recurso
  • Gestión de activos entre la versión de escritorio y de dispositivo en libgdx
  • Configuración de un icono de notificación de Android en una URL remota
  • Cómo utilizar Toast en ASyncTask / onPostExecute con cadena de recursos?
  • ¿Agregar nuevas líneas a un recurso de texto en Android?
  • TextView negrita a través de un archivo xml?
  • ¿Cómo puedo cargar una clase de un archivo jar empaquetado en mi archivo .apk?
  • Uso de la memoria de aplicaciones Android de Xamarin
  • 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.