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:

 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); 

  • ¿Es posible previsualizar el diseño de un AppWidget en Eclipse?
  • Compruebe si existe un widget en la pantalla de inicio usando appWidgetId
  • El método de Android AppWidgetManager updateAppWidget falla en establecer intents, cargar datos. Y sucede al azar
  • Android appwidget no se actualizará desde la actividad
  • Tamaño incorrecto de la cuadrícula del widget
  • Widget para encender / apagar la linterna de la cámara en android
  • ACTION_BATTERY_CHANGED disparando como loco
  • Widget de aplicación: Efecto de ondulación perdido en el elemento de lista cuando se agrega fondo al diseño externo
  • 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.