Android 2.2 Widget Layout

  • 5 Antworten
  • Letztes Antwortdatum
H

Hin

Stamm-User
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: 258
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

M
Antworten
21
Aufrufe
1.272
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
935
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
983
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
768
mkuz24
M
A
Antworten
5
Aufrufe
678
swa00
swa00
Zurück
Oben Unten