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


Ajustar el fondo de AppWidget para un widget afecta a otros también

El archivo de diseño de mi widget comienza en el nivel superior con:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="@dimen/widget_margin" android:id="@+id/widget" android:background="#20000000" > 

Por lo tanto, el fondo de partida es semi-transparente. Entonces en algún momento durante la ejecución, llamo a lo siguiente para hacer el fondo completamente transparente:

  • ¿Qué componente de visualización utiliza Google Plus App (Stream)?
  • Cómo crear un botón personalizado en Android usando estilos XML
  • Android imageview no respeta maxWidth?
  • Android cómo comprobar si el servicio de intenciones sigue funcionando o si ha dejado de funcionar
  • Mapa Ver instrucciones de dibujo usando google Directions API - decodificar polilíneas
  • Subir archivo grande en Android sin error outofmemory
  •  remoteViews.setInt(R.id.widget, "setBackgroundColor", Color.parseColor("#00000000")); appWidgetManager.updateAppWidget(appWidgetId, remoteViews); 

    Mientras esto funciona, lo que estoy encontrando es que cuando se agrega otro widget, el fondo para ese widget comienza como totalmente transparente en lugar de semi-transparente como por el xml de diseño. Es como si la configuración del color de fondo de un widget lo hubiera cambiado para todos, incluyendo nuevos widgets agregados posteriormente.

    Ahora esto es extraño, porque al mismo tiempo que el fragmento anterior, también añadir un mapa de bits en el widget (a través de las RemoteViews ) con:

     remoteViews.setImageViewBitmap(R.id.imageView, bmp); 

    … y que el mapa de bits no aparece en todos los widgets posteriores, por lo que el método básico que estoy usando parece ser sonido.

    Entonces, ¿por qué el fondo se está propagando a otros widgets?

    EDIT para agregar la derivación de appWidgetId como se solicitó en el comentario:

    Básicamente el viene de un Intent , por ejemplo en onCreate() de la Activity configuración para el widget:

     Intent intent = getIntent(); Bundle extras = intent.getExtras(); int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 

  • Android mediaplayer flujo de archivos mp3 en línea
  • Android: Tamaño decreciente del botón
  • Actividad de inicio de Android al presionar elemento ListView de widget
  • Datos de formulario multipart de Android POST
  • Cómo agregar animaciones personalizadas en Google Map V3 Marker cuando suelto cada marcador uno por uno?
  • Progressbar WebView como navegador de Chrome
  • One Solution collect form web for “Ajustar el fondo de AppWidget para un widget afecta a otros también”

    En su clase AppWidgetProvider , anula el método onUpdate . El último parámetro es appWidgetIds que es una matriz de ids de widgets activos actuales. Lo más probable es que haya implementado el cambio del color de fondo allí haciendo bucle a través de esa matriz para cada widgetId. Para poder definir un fondo personalizado para cada widget, necesitará implementar una lógica de asignar un fondo necesario a la widgetId específica y respetar esa lógica dentro del bucle.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.