Android - OnDraw nicht in dynamisch eingefügt benutzerdefinierte Ansicht aufgerufen wird
-
08-10-2019 - |
Frage
Ich habe eine benutzerdefinierte Ansicht dynamisch eingefügt werden und die onDraw
wird nicht aufgerufen werden. Ich habe zunächst die benutzerdefinierte Ansicht ohne das dynamische Einfügen und es funktionierte gut, aber wenn es um meine Arbeits Code-Basis zu bewegen, kann ich nicht onDraw
jemals genannt zu bekommen bekommen kann, auch wenn der Blick Konstruktor aufgerufen wird und die onMeasure
wird auch genannt wird. Ich habe invalidate()
und postInvalidate()
Anrufe rund um den Ort versucht setzen, aber sie scheinen nicht die Ansicht zu zwingen, zu ziehen. Die Ansicht Hierarchie sieht gleich für beide Version und ich bin verloren.
Kann mir jemand helfen?
EDIT: Ein bisschen mehr Tests haben gezeigt, dass onDraw
auf dem Emulator genannt wird immer, aber nicht den Hörer ab. Auch onSizeChanged
am Mobilteil hat die richtigen Werte kommen durch, aber auf dem Emulator die Werte sind alle 0.
EDIT: Ich habe über mit ihm spielen und noch nicht überall bekommen, haben so ein Kopfgeld auf sie setzen. Wenn Sie mehr Code / xml / Infos benötigen dann lass es mich wissen.
Lösung 2
änderte ich den View
zu einem TextView
und es scheint jetzt zu arbeiten, obwohl ich bin ein wenig verwirrt, Warum die View
hat nicht funktioniert.
Andere Tipps
Das klingt viel wie ein Problem, das ich vor kurzem hatte, mit meiner ersten benutzerdefinierten Ansicht. Haben Sie bemerkt, wenn, wenn Ansichtshierarchie Laden Sie Ihre benutzerdefinierten Ansichten angezeigt? und trotzdem tun sie erscheinen in der Drahtgitter-Vorschau angelegt oder nicht?
Wenn letzteres der Fall ist, ist es requestLayout()
, die nicht genannt bekommt (Lade Ansicht Hierarchie Anrufe, die auf jeder Ansicht - das ist, warum es Ansichten macht auftauchen). Ich habe auch, dass ein ähnlicher Fehler gefunden wurde bereits berichtet hier .