Cómo cambiar el diseño del widget de fondo mediante programación

Tome esta disposición del widget por ejemplo (parte de mi disposición entera del widget)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/widget_background_dark_4x2" android:orientation="horizontal" android:id="@+id/widget_main" > 

Quiero ser capaz de cambiar el fondo dibujable utilizado basado en una selección de usuarios. Por ejemplo, usando vistas remotas, puedo actualizar el color de un texto haciendo algo como esto:

 remoteView.setTextColor(R.id.text_view1, Color.WHITE); 

Sin embargo he estado encontrando difícil al mismo para el fondo de mi disposición linear. Lo intenté:

 remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable", ((BitmapDrawable) context.getResources().getDrawable(R.drawable.widget_background_dark_4x2)).getBitmap()); 

Pero consigo el error siguiente:

 06-01 22:46:36.305: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LinearLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap) 

Cualquier ayuda con esto sería muy apreciada.

<< EDIT >> También he probado esto:

 Bitmap bitmap = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.widget_background_light_4x2)).getBitmap(); remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable",bitmap ); 

Pero por desgracia recibe el siguiente error:

06-01 23:11:26.039: WARN/AppWidgetHostView(244): updateAppWidget couldn't find any view, using error view 06-01 23:11:26.039: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LinearLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap)

Has probado:

 remoteView.setInt(R.id.widget_main, "setBackgroundResource", R.drawable.widget_background_dark_4x2); 

Ok, bien, la única solución que podría terminar con venir para esto fue para cambiar la forma en que se muestra la imagen de fondo en el LinearLayout. Como se puede ver arriba, estaba usando la etiqueta de fondo de Android para mostrar la imagen. Lo que acabé haciendo fue que quité esto y luego envuelto todo mi diseño de widget (que estaba dentro de un linearlayout dentro de un relativelayout. Entonces sólo tenía un ImageView decalred primero dentro de la RelativeLayout y luego tenía el resto de los widgets linearlayout sentarse en la parte superior Luego, dentro de mi código, sólo establecí la fuente de vista de imagen a través de la vista remota y funcionó como un regalo.

No es la manera más elegante / eficiente de codificar, pero funcionó!

  • Se produjo un error en la transacción del encuadernador al colocar un mapa de bits dinámicamente en un widget.
  • ¿Cómo agregar un botón a las notificaciones en android?
  • Cómo acceder a una base de datos SQL desde una aplicación de widget
  • El widget de Android no puede recibir el mensaje DATE_CHANGED
  • SetImageViewBitmap no funciona en el widget android
  • ¿Qué es exactamente un widget?
  • Actividad de inicio de Android al presionar elemento ListView de widget
  • Android clicable Widget con ListView no se puede hacer clic en ListItems
  • Android - widget de actualización sobre el servicio con datos de la red. ¿El mejor enfoque?
  • Actualizar Android ListView en Widget
  • ¿Cuál es la diferencia entre `DialogInterface.dismiss ()` y `DialogInterface.cancel ()`?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.