Android 2.2 Widget Layout

H

Hin

Stammgast
111
Hallo zusammen,

ich möchte ein kleine Widget schreiben, das im wesentlichen das Layout wie im Bild im Anhang hat.

Wie man sieht wiederholt sich das selbe Layout in einer Art Liste. In einer Activity würde ich dafür eine ListView verwenden. Dies ist aber in einem Widget bei Android 2.2 und 2.3 noch nicht möglich.

Gibt es gar keine andere Alternative als x-mal hintereinander das gleiche layout in der xml zu kopieren und einzufügen?
 

Anhänge

  • widgetlayout.png
    widgetlayout.png
    1,2 KB · Aufrufe: 220
Du kannst das Layout auch dynamisch erzeugen, dann brauchst du es nur 1 mal als xml zu Erstellen und dann wiederverwenden oder ganz ohne xml alles dynamisch ...
 
Wie erzeuge ich ein Objekt des XML Layouts in einem Widget? findViewById(int id) ist ja zum Beispiel nur innerhalb einer Activity möglich, ich habe ja aber nur ein Widget (habe AppWidgetProvider erweitert).
 
Ich hab noch kein Widget programmiert, aber schau mal hier -> Android Homescreen Widgets- Tutorial da gibts Erklärungen und Beispielcode, damit kommst du bestimmt weiter.

Z.B. seh ich da sowas:
Code:
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
					R.layout.widget_layout);

Das müßte ja das findViewByID dann "ersetzen" ...
 
Tom299 schrieb:
Ich hab noch kein Widget programmiert,...

Ok, dann kannst du mir wohl auch nicht weiterhelfen, trotzdem danke für deine Mühe.

Ich erstelle ja genau diese RemoteViews. Meine Frage ist nun, ob ich dem Layout der RemoteViews im Code noch weitere Elemente hinzufügen kann (unter Android >= 2.2; ab 3.0 ist dies ja kein Problem mehr, aber ich will alles ab 2.2 unterstützen). Ich habe jetzt einfach alle Elemente, die ich benötige direkt in die XML geschrieben. Das ist nicht schön, aber es funktioniert.

Falls jemand hier Erfahrung in der Widget-Programmierung hat und es irgendeine dynamische Lösung gibt, würde ich mich über eine Antwort freuen. :)
 
So, habe es nun geschafft. Falls sich sonst noch wer damit beschäftigen sollte, hier meine Lösung.

Im Code:
PHP:
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main_layout);
RemoteViews newView;
for (int i = 0; i < NUMBER_OF_EVENTS; i++) {
    newView = new RemoteViews(context.getPackageName(), R.layout.widgetrow);
    newView.setTextViewText(R.id.title, "titel nummer " + i);
    remoteViews.addView(R.id.main_layout_linearlayout, newView);
}
main_layout.xml:
PHP:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout_linearlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <!-- hier wird über den code mehrfach das widgetrow.xml layout eingefügt -->
    
</LinearLayout>
widgetrow.xml:
PHP:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="3dp" >

    <TextView android:id="@+id/title" android:textSize="15dp" android:layout_width="wrap_content" android:layout_height="wrap_content" />

</LinearLayout>

Ich habe ziemlich viel gekürzt um es übersichtlich zu halten. Kann gut sein, dass das so nicht lauffähig ist, aber ich denke es gibt einen guten Einblick in die Funktionsweise.
 
  • Danke
Reaktionen: keinbrain

Ähnliche Themen

wernho
Antworten
11
Aufrufe
605
wernho
wernho
M
Antworten
4
Aufrufe
1.148
swa00
swa00
5
Antworten
0
Aufrufe
1.117
586920
5
Zurück
Oben Unten