Problem mit EditText Hintergrund (Android)

8

Ich habe ein Problem mit EditText Hintergrund wie folgt

%Vor%

Alttext http://i765.photobucket.com/albums/xx299/trietrinhtrinh/edittext.jpg

Nach dem Versuch, den Hintergrund einzustellen, sieht es schlimmer aus

%Vor%

Alttext http://i765.photobucket.com/albums/xx299/trietrinhtrinh/edittext2.jpg

Was passiert mit EditText Hintergrund? Wie kann EditText den Standard-Stil beibehalten?

    
Dennie 26.10.2009, 16:02
quelle

8 Antworten

4

Wenn Sie Ihren EditText-Hintergrund auf eine Farbe setzen, unterdrücken Sie den Standardhintergrund von Android, der wahrscheinlich ist ein Nine Patch , aber definitiv nicht nur eine einfache Farbe. Als Ergebnis erhalten Sie eine einfachste Form von EditText - eine quadratische Box. Hier ist eine etwas veraltete Liste mit integrierten Zeichenabbildern , um Ihnen eine Idee zu geben

    
Bostone 27.10.2009, 02:41
quelle
16

Hier ist 2 Lösung, um den Hintergrund von EditText zu ändern, den ich vorher untersucht habe, hoffe, dass es Ihnen helfen kann:

Problem : Wenn Hintergrund zu EditText gesetzt wird, sieht es so schrecklich aus

Analysys : EditText verwendete 9-Pfad-Bild für den Hintergrund. Sie verwendeten einen Selektor, um die Hintergrundbildbasis auf den aktuellen Zustand von EditText zu ändern (Aktivieren / Fokus / Drücken, Standard)

Es gibt zwei Lösungen, um dieses Problem zu lösen, jede Lösung hat sowohl Vorteile als auch Nachteile:

Lösung1 : Erstellen Sie selbst EditText (folgen Sie dieser Lösung, wir haben die Ansicht EditText frei ändern.

Vorteil : Die EditText-Ansicht wird frei gerendert und folgt Ihrem Zweck. Sie müssen Ninepath-Bild nicht als aktuelles Werkzeug von Android EditText erstellen. (Sie müssen Provider IF in Ihrem EditText, um den Hintergrund nahtlos zu ändern basierend auf dem Status von EditText (Enable / Focus ....) Wieder verwendbar und benutzerdefinierter, falls Sie die Hintergrundfarbe ändern oder mehr Farbe hinzufügen möchten

Nachteil : Nehmen Sie sich viel Mühe, um Ihren benutzerdefinierten EditText zu erstellen und zu testen. (Ich wähle Lösung 2, also habe kein Demowerkzeug von Lösung 1, falls jemand dieser Lösung folgt, kannst du uns deinen Democode mitteilen)

Lösung2 : Benutzter Selektor als Android-Gerät

❶Erstellen Sie den Aufruf der XML-Datei edittext_selector.xml

%Vor%

❷Ein EditText xml set selector:

%Vor%

Hinweis :

● In diesem Demo-Code wurde ich etwas Verhalten des Ansichtszustandes entfernen, verweisen android implementieren für Detailverhalten (Fokus / Unfokus, aktivieren / deaktivieren, drücken, ausgewählt ...)

● Achten Sie auf die Reihenfolge der Artikel in Ihrem Selektor. Die Differenzreihenfolge des Elements in der Selektor-XML-Datei hat einen unterschiedlichen Hintergrund.

Vorteil : Einfach, erstellen Sie einfach Selektor und setzen Sie Selektor auf Hintergrund, für den Fall, dass Sie mehr Farbe wollen, setzen Sie einfach mehr Auswahl und dann durch Code.

Nachteil : Versuchen Sie, ein 9-Pfad-Bild für den Selektor zu erstellen, falls Sie die Farbe ändern oder mehr Farbe hinzufügen möchten, müssen Sie mehr Bild und Selektor erstellen. Es ist also weniger robust als Solution1

Dies ist meine Untersuchung zu Handler Hintergrund des Bildes, so kann es richtig oder falsch, wenn Sie eine bessere Lösung oder zu erklären, fühlen sich frei, mit uns zu teilen.

Ich war implementieren Lösung 2 und es hat funktioniert.

    
NguyenDat 22.02.2011 01:06
quelle
11

Meine Lösung ist eine einzelne Codezeile:

%Vor%

Es bricht so zusammen:

  • "getBackground ()" ruft den Hintergrund von der Komponente
  • ab
  • "setColorFilter" ruft eine Filterung für das Hintergrundbild selbst auf
  • "Farbe. & lt; deine-Farbe-hier & gt;" bestimmt, welche Farbe an den Filter übergeben werden soll
  • "PorterDuff.Mode. & lt; Ihr-Wunsch-Filter-Modus & gt;" legt die Art der Manipulation fest, die Sie mit der gegebenen Farbe und dem abgerufenen Hintergrundbild machen möchten.

Personen mit Kenntnissen der Bildbearbeitungssoftware können den Modus erkennen. Jeder Modus hat eine gewisse Auswirkung darauf, wie die Farbe auf das Hintergrundbild angewendet wird. Um einfach die Farbe des Bildes zu "überschreiben" und dabei seine Farbverläufe, Ränder und dergleichen beizubehalten, verwenden Sie MULTIPLY .

    
Hugo Sepulveda 19.07.2011 15:22
quelle
4

Wenn Sie die Farbe des Android-Hintergrunds im laufenden Betrieb ändern möchten, ohne das Hintergrundbild vollständig zu ändern, versuchen Sie Folgendes: (Es ist wahrscheinlich nicht die beste Lösung, aber es funktioniert):

%Vor%     
Fred 18.07.2011 17:54
quelle
3

Sie müssen das Bild nicht erstellen. Es gibt ein eingebautes Bild im Android-System, das Sie verwenden können.So bearbeiten Sie Ihren EditText in XML wie folgt: -

%Vor%

Beachten Sie diese Zeile: android:background="@android:drawable/editbox_background_normal"

    
Bernard Banta 29.06.2012 08:44
quelle
2

Wie ich denke, sollten Sie die Hintergrundfarbe ändern, nicht den Hintergrund. Weil es xml benutzerdefinierte Form verwendet.

  • Ein Zeichen, das als Hintergrund verwendet werden kann. Dies kann entweder ein Verweis auf eine vollständig ausklappbare Ressource sein (z. B. ein PNG-Bild, 9-Patch, XML-Zustandslistenbeschreibung usw.) oder eine Vollfarbe wie #ff000000 (schwarz).

  • Kann eine Referenz auf eine andere Ressource in der Form @[+][package:]type:name oder auf ein Designattribut in der Form ?[package:][type:]nam e.

  • sein
  • Kann ein Farbwert in Form von #rgb , #argb , #rrggbb oder #aarrggbb sein.

Shtirlic 26.10.2009 16:38
quelle
1

Sehen Sie sich Ссылка an, wenn Sie Ihren EditText formatieren möchten.

    
Thomas Ahle 06.09.2010 22:15
quelle
0

Ich musste SRC_ATOP dafür verwenden, um für mich zu arbeiten

%Vor%     
Barrie Galitzky 18.09.2014 20:47
quelle

Tags und Links