2011-06-13 21 views
21

Tengo algunos remoteView con ImageViews, y tengo que cambiar el "android: background" mediante programación.Cambiar remoteView ImageView background

sé cómo cambiar el "android: src" con:

remoteView.setImageViewResource(int viewId, int srcId); 

y trabaja muy bien, pero ¿cómo puedo cambiar el "android: fondo"?

Gracias

Respuesta

68

Puede usar el método public void setInt (int viewId, String methodName, int value).

remoteView.setInt(R.id.viewid, "setBackgroundResource", R.color.your_color) 
+5

Solo desde la versión 2.2 ... – BrainCrash

+1

@jamapag No funciona en Android 4.03. – herbertD

+0

Funciona desde Android SDK versión> 7 en SDK 7 no @RemotableViewMethod anotación [fuente aquí] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1 _r2/android/view/View.java # View.setBackgroundResource% 28int% 29) y en SDK 8 agregó [source here] (http://grepcode.com/file/repository.grepcode.com/java/ext/com .google.android/android/ 2.2_r1.1/android/view/View.java # View.setBackgroundResource% 28int% 29) y esta anotación es solo una razón por la cual el método setBackgroundResource() no funciona. –

0

Use setBackgroundResource(int).

Además, aquí hay algo que puede tomar nota. Cuando mira Android documentation, si hay un elemento xml para una Vista que puede cambiar, normalmente apunta al método para realizar el cambio en tiempo de ejecución.

+1

Conozco el uso de setBackgroundResource (int), pero desafortunadamente no se puede usar en remoteViews. – BrainCrash

+1

La pregunta no menciona que está utilizando un objeto RemoveViews. Por favor sé más específico. –

+2

La palabra "widget" está presente en el título y la descripción, también el ejemplo comienza con "vista remota". Voy a editar para que quede más claro de todos modos. – BrainCrash

0

La forma Jerry-plataforma

Creo que podría hacerlo usando la manera jerry-plataforma haciendo un segundo diseño con el nuevo fondo, a continuación, crear su RemoteView el uso de este nuevo diseño, como este:

  • RemoteViews remoteViews = new RemoteViews (context.getPackageName(), R.layout widget1.);
  • RemoteViews remoteViews = new RemoteViews (context.getPackageName(), R.layout. widget2);

después de todo, un diseño no es tan caro.