2011-06-13 21 views
21

Mam zdalny widok z ImageViews i muszę programowo zmienić "android: tło".Zmiana remoteView ImageView background

wiem jak zmienić "android: SRC" z:

remoteView.setImageViewResource(int viewId, int srcId); 

i działa dobrze, ale w jaki sposób mogę zmienić tło "android"?

Dzięki

Odpowiedz

68

Można użyć metody public void setInt (int viewId, String methodName, int value).

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

Tylko z wersji 2.2 ... – BrainCrash

+1

@jamapag Nie działa na systemie Android 4.03. – herbertD

+0

To działa z wersji Android SDK> 7 w SDK 7 bez adnotacji @RemotableViewMethod [źródło tutaj] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1 _r2/android/view/View.java # View.setBackgroundResource% 28int% 29), aw SDK 8 dodano [źródło tutaj] (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) i ta adnotacja jest tylko powodem, dla którego metoda setBackgroundResource() nie działa. –

0

Stosować setBackgroundResource(int).

Ponadto, jest coś, co możesz wziąć pod uwagę. Kiedy patrzysz na Android documentation, jeśli istnieje element xml dla widoku, który możesz zmienić, zwykle wskazuje on na metodę zmiany w środowisku wykonawczym.

+1

Znam użycie setBackgroundResource (int), ale niestety nie można go używać w remoteViews. – BrainCrash

+1

Pytanie nie wspomina o tym, że używasz obiektu RemoveViews. Proszę być bardziej konkretnym. –

+2

Słowo "widżet" jest obecne w tytule i opisie, również przykład zaczyna się od "remoteView". Będę edytować, tak czy inaczej. – BrainCrash

0

Sposób jerry-rig

Myślę, że można to zrobić za pomocą sposobu jerry-rig robi drugi układ z nowym tłem, a następnie stworzyć swój RemoteView przy użyciu tego nowego układu, na przykład:

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

W końcu układ nie jest tak drogi.