Ich habe ein Design, wo es einen Eingang EditText
mit einer Reihe von Optionen für Eingabeeinheiten (RadioGroup
voller RadioButtons
) gibt. Wenn der Benutzer eine bestimmte Option auswählt, habe ich ViewGroup.LayoutParams
implementiert, um die Breite auf den erforderlichen Wert einzustellen.Cursor in falscher Position bei der Größenänderung EditText mit animateLayoutChanges
Alles funktioniert normalerweise gut, aber wenn ich animateLayoutChanges
fügen Sie das gesamte Erscheinungsbild zu verbessern, wird der Cursor in der EditView
negativ beeinflusst:
- Der Benutzer gibt einen Wert, erscheint alles normal (Schwerkraft ist direkt in der
EditText
übrigens - Die Option, die die Ansicht verkleinert wird überprüft - die Ansicht animiert schrumpft richtig - aber - der Eintrag ist jetzt aus den Augen! Versteckt, wo es hätte sein sollen. Wenn Sie in das Feld klicken oder die Option
RadioButton
auf eine mit der gleichen Größe ändern, bewegt sich der Eintrag an die entsprechende Position ... - Ähnlich - die Ansicht ist klein und hat einen Eintrag in der richtigen Position, eine Option wo die Ansicht erweitert wird, wird ausgewählt - jetzt wird die Ansicht erweitert und der Eintrag wird in der Mitte der Ansicht belassen, anstatt sich an die richtige Position zu bewegen! Wieder erfrischt es, wenn in Bezug auf eine andere Aktion den
EditText
durchgeführt wird ..
Ich habe versucht, dieses Problem zu beheben durch:
- Speichern der Eingabezeichenfolge in eine temporäre Variable und mit
setText()
- Mit ersetzen
append("")
nichts hinzuzufügen vor dem erneuten hinzufügen der Zeichenkette - Aufruf
.requestFocus()
imEditText
bei Auswahl - die Ansicht mit
.invalidate()
- Einstellen der Cursor an das Ende der
- Den Versuch, benutzerdefinierte-Set Animationen Ansicht Redrawing (ohne Erfolg, kann ich mit diesem Ansatz fortzusetzen habe?)
Wenn jemand weiß, Wie kann ich die Ansicht möglicherweise aktualisieren, so dass sie die Textposition aktualisiert oder die Animation auf diese Ansicht deaktiviert, während alle anderen beibehalten werden, wäre das großartig!
Danke!
Können Sie Ihren Beispielcode angeben, um zu verstehen, was Sie versuchen und nicht funktionieren? – mqpasta
Hallo, sicher kann ich, aber ich sehe nicht, wie es hilft - keine der oben genannten Methoden aktualisieren die Ansicht, so dass es die Cursorposition ändert .. Ich brauche nur eine Möglichkeit, es nach dem Ende der animateLayoutChanges Animation zu aktualisieren. Ich habe versucht, es zu setzen, um das Ende der Animation programmgesteuert zu überprüfen, aber das verwendet einen Layout-Übergang und keine Animation. Gibt es etwas in der Frage, die Sie nicht verstehen? – Michal