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:
- ¿Qué es exactamente un widget?
- Cómo agregar widgets múltiples en una aplicación?
- ¿Cómo mostrar un diálogo en un widget?
- Android - Obtener el widget del cronómetro
- Hacer un bucle a través de todos los "widgets" / elementos de una actividad
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)
- Ejemplo de Google Search Like Widget
- Cómo tener acceso a un elemento TextView en un BroadcastReceiver
- El método get (String) no está definido para el tipo String error al agregar los códigos a la clase filter del adaptador en android
- ¿Cómo agregar un botón a las notificaciones en android?
- Android: uso de la vista personalizada en el widget
- Cómo acceder a una base de datos SQL desde una aplicación de widget
- ¿Cuál es la diferencia para actualizar Android App Widget entre dos enfoques?
- ¿Cómo puedo agregar un nuevo botón en el widget del selector de fechas en android?
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ó!
- No se puede encontrar el símbolo NOTIFICATION_SERVICE?
- ¿Cómo salir de un bucle de tiempo después de un tiempo determinado?