2010-12-05 11 views
3

Ich habe eine benutzerdefinierte Ansicht dynamisch eingefügt und die onDraw wird nicht aufgerufen. Ich habe zunächst die benutzerdefinierte Ansicht ohne die dynamische Einfügung gemacht, und es funktionierte gut, aber wenn ich es auf meine Arbeitscode-Basis verschiebe, kann ich onDraw nie abgerufen werden, obwohl der Ansichtskonstruktor aufgerufen wird und die onMeasure auch aufgerufen wird. Ich habe versucht, invalidate() und postInvalidate() Anrufe um den Ort zu setzen, aber sie scheinen nicht zu zwingen, die Ansicht zu zeichnen. Die Ansichtshierarchie sieht für beide Versionen gleich aus und ich bin verloren.Android - onDraw wird nicht dynamisch eingefügte benutzerdefinierte Ansicht aufgerufen

Kann jemand helfen?

EDIT: Ein bisschen mehr Tests haben gezeigt, dass onDraw auf dem Emulator, aber nicht das Mobilteil angerufen wird. Auch onSizeChanged auf dem Mobilteil hat die richtigen Werte durchkommen, aber auf dem Emulator sind die Werte alle 0.

EDIT: Ich habe damit herum gespielt und kann immer noch nirgendwo hin, also habe ein Kopfgeld draufgesetzt es. Wenn Sie mehr Code/XML/Info benötigen, lassen Sie es mich bitte wissen.

Antwort

1

änderte ich den View zu einem TextView und es scheint jetzt zu arbeiten, obwohl ich ein wenig verwirrt, bin, warum die View nicht funktioniert.

1

Das klingt viel wie ein Problem, das ich vor kurzem hatte, mit meiner ersten benutzerdefinierten Ansicht. Ist Ihnen aufgefallen, dass beim Laden der Ansichtshierarchie Ihre benutzerdefinierten Ansichten angezeigt werden? Und wie auch immer erscheinen sie in der Drahtgittervorschau oder nicht?

Wenn Letzteres der Fall ist, wird es requestLayout() aufgerufen, das nicht aufgerufen wird (Laden von Ansichtshierarchieaufrufen, die auf jeder Ansicht - das ist, warum Ansichten angezeigt werden). Ich habe auch festgestellt, dass ein ähnlicher Fehler bereits here gemeldet wurde.

+0

Vielen Dank für Ihre Antwort, aber die Ansichten werden nicht im Hierarchie-Viewer angezeigt und wenn requestLayout mit einer Log-Anweisung überschrieben wird, wird es sicherlich aufgerufen. Tatsächlich wird das Testen auf dem Emulator - onDraw jetzt aufgerufen, aber die Zeichenfläche hat Dimensionen des gesamten Bildschirms, nicht nur die Ansicht. – Martyn

Verwandte Themen