Größenänderbare Appwidget-Dimensionen erhalten (oder umgehen)

9

Ich habe eine schöne Erweiterung für meine App erstellt. Es zeigt nur eine Liste der Elemente an, die von einem Server heruntergeladen wurden. Nun, um genau zu sein, sieht es nur wie eine Liste aus, da ListView in RemoteViews in älteren Android-Versionen (die ich unterstützen möchte) nicht unterstützt wird.

Ich möchte, dass mein Widget eine Liste mit aktuellen Elementen anzeigt, und ich möchte, dass diese Elemente den gesamten verfügbaren Widgetbereich nutzen. Um mein Problem besser zu zeigen, nehmen wir WLOG an, dass ich ein Widget mit dem TV-Programm des ausgewählten Programms haben möchte. Wissen, dass:

  • Herunterladen vom Server ist teuer
  • WLOG wir können davon ausgehen, dass Aleph null Elemente auf dem Server sind, die ich herunterladen kann
  • Der TV-Zeitplan kann sich ändern, daher möchten wir den Zeitplan nicht für einen ganzen Monat herunterladen, sondern höchstens für einen halben Tag
  • Das erste angezeigte Element enthält die Sendung, die gerade gesendet wird

Wie kann ich sicherstellen, dass am unteren Rand des Widgets kein leerer Bereich vorhanden ist, wenn der Benutzer die Größe ändert, um sie größer zu machen? Ich suchte SO und es scheint, dass, wenn Benutzer Widget-Größe ändern (auf ICS oder benutzerdefinierten Launcher - GO Launcher EX erlaubt) es unmöglich sein wird (Korrigieren Sie mich, wenn ich falsch liege), neue Dimensionen des Widgets zu erhalten.

Aber ich brauche sie nicht wirklich! Ich würde gerne wissen, wie viele Elemente in das Widget passen und die Berechnung aus Widget-Größe ist nur eine der Methoden.

Also frage ich Sie, ob es zum Beispiel möglich ist, eine Benachrichtigung zu erhalten, wenn eine Fernansicht sichtbar wird, oder eine benutzerdefinierte Ansicht für die Verwendung in RemoteViews zu erstellen, die es mir erlauben würde, die Anzahl der sichtbaren Objekte zu schätzen / p>

Wenn es nicht möglich ist, muss ich nur einige vernünftige Standardwerte verwenden, aber es wäre schön zu wissen, wie viele Zeilen ich zeigen kann.

    
user1234567 08.02.2012, 12:01
quelle

1 Antwort

4

Seit Android 4.1 (API-Stufe 16) können Sie Größenänderungen mit onAppWidgetOptionsChanged . Werfen Sie einen Blick auf diese Antwort für ein einfaches Beispiel. Mit diesem Callback können Sie zumindest die Größenbereiche von Widgets verfolgen (Schade, dass Sie die tatsächlichen Widget-Größen nicht verfolgen können). Mit früheren Versionen und benutzerdefinierten Launcher haben Sie Pech: AFAIK gibt es keinen generellen Weg, um tatsächliche Widget-Größenbereiche zu bekommen, noch weniger eine tatsächliche Größe.

Was ich in Ihrem Fall tun würde, ist das Widget mit einer Anzahl von Ansichten zu füllen, die in die Standard-Widget-Größe passen, wie im Appwidget-Provider definiert. Auf diese Weise vermeiden Sie, dass unten leere Bereiche angezeigt werden, es sei denn, es sind nur wenige Elemente vorhanden. Wenn die Größe des Widgets geändert wird, können Sie mit onAppWidgetOptionsChanged mit API-Stufe 16 + und API-Ebene & lt; 16 AFAIK erhalten Sie leeren Speicherplatz, aber in diesem Fall könnten Sie bald ein Widget-Update auslösen, um dieses Problem zu minimieren.

    
Jose_GD 26.03.2013 13:33
quelle