So ändern Sie das widget-layout-hintergrund programmgesteuert in Android
Nehmen Sie dieses widget-layout-Beispiel (Teil meiner gesamten widget-layout)
<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"
>
Ich möchte in der Lage sein, um den hintergrund zu ändern drawable verwendet, basierend auf einer Benutzer-Auswahl. Zum Beispiel mit remote-Ansichten kann ich update die Farbe der textview von etwas wie dies:
remoteView.setTextColor(R.id.text_view1, Color.WHITE);
Aber ich habe es schwierig gefunden, auf die gleiche für den hintergrund meiner linearer Anordnung. Ich habe versucht dies:
remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable", ((BitmapDrawable) context.getResources().getDrawable(R.drawable.widget_background_dark_4x2)).getBitmap());
Aber ich bekomme die folgende Fehlermeldung:
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)
<< EDIT >>
Habe auch dies versucht:
Bitmap bitmap = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.widget_background_light_4x2)).getBitmap();
remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable",bitmap );
Aber leider die folgende Fehlermeldung erhalten:
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)
InformationsquelleAutor Pelly | 2011-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht:
widget_background_dark_4x2 was ist die genaue Größe kann u mir. Ich arbeite an diesem
Ich habe nicht diese genauen hintergrund. Sie können überprüfen Sie die Dimensionierung Richtlinien für app-widgets hier: developer.android.com/guide/practices/ui_guidelines/...
ja danke. Nach der Implementierung von framelayout ich dies erreichen. Dank für die Antwort.
Funktioniert wie ein Charme
InformationsquelleAutor foofaa
Ok, auch die einzige Lösung, die ich konnte am Ende kommen mit für diese war die änderung der Art, wie ich war, die Anzeige des hintergrund Bildes im LinearLayout. Wie man oben sehen kann war ich mit dem android:background-tag um das Bild anzuzeigen. Was ich am Ende dabei war, entfernte ich diese und dann umhüllt meinen gesamten widget-layout (das war innerhalb eines linearlayout innerhalb ein relativelayout. Ich habe dann gerade eine Bildansicht decalred ersten in die RelativeLayout und hatte dann den rest der widgets linearlayout auf ihm sitzen. Dann in meinem code, den ich nur legen Sie die Bildansicht Quelle über die remote-Ansicht und es funktioniert wie ein Leckerbissen.
Nicht die besonders elegante/effiziente Art der Programmierung, aber es hat geklappt!
InformationsquelleAutor Pelly