Custom EditText funktioniert nicht, nachdem der Eingabetyp über setInputType () festgelegt wurde

10

Ich habe eine benutzerdefinierte EditText erstellt und die onDraw() -Funktion überschrieben. Alles hat gut funktioniert (ich konnte etwas in den EditText zeichnen), bis ich die Eingabemethode für dieses EditText ändern wollte und diese Funktion aufgerufen habe:

%Vor%

Egal, wann und wo ich es nenne: nachdem es aufgerufen wurde, verschwindet meine benutzerdefinierte EditText , und nur die ursprüngliche EditText wird angezeigt, obwohl meine überschriebene onDraw() -Funktion und darin entweder die Super-Funktion ist Funktion wird aufgerufen (egal wo genau ich sie aufruft).

Ich habe auch versucht, mit transparenten Farben zu spielen, wie in einigen Posts hier vorgeschlagen: setBackgroundColor(Color.TRANSPARENT) für die Basisklasse und auch paint.setColor(0x80FF0000) für mein Objekt Paint in der Funktion onDraw() aber sie hatten keine Wirkung.

BEARBEITEN: Ich habe festgestellt, dass das Problem nicht darin liegt, den Eingabetyp zu setzen, sondern gleichzeitig den Eingabetyp AND gravity von EditText zu setzen:

%Vor%

Wenn einer von ihnen nicht festgelegt ist, wird meine benutzerdefinierte Ansicht wie erwartet gezeichnet. Auch (und was noch seltsamer ist): mit Gravity.CENTER_VERTICAL gibt es kein Problem, nur mit Gravity.CENTER_HORIZONTAL und Gravity.CENTER .

Diese beiden Einstellungen scheinen sich gegenseitig auszuschließen. Könnte das möglich sein?

    
meztelentsiga 09.05.2014, 12:25
quelle

3 Antworten

2

Überprüfen Sie Ihre getScrollX() -Werte. Ich wette, Sie werden Werte wie 1000000 Pixel sehen. EditText übersetzt seine Leinwand auf diese seltsame Art und Weise, obwohl Sie tatsächlich darauf zeichnen, ist es weit weg vom sichtbaren Clip.

Um es zu lösen, fügen Sie einfach den scrollX-Wert zu Ihren Zeichenkoordinaten hinzu.

    
simekadam 20.05.2015 12:50
quelle
0

Sie müssen android: digits="0123456789" in xml.Aber ich weiß nicht warum ...

    
H3c 18.04.2015 03:32
quelle
0

Dank @simekadams Antwort konnte ich es endlich beheben. So habe ich es behoben, falls du es nicht verstanden hast

%Vor%     
Ahmad El-Melegy 18.03.2018 10:53
quelle