Wie kann ich die EditText-Unterleiste ausblenden (die Eingabeaufforderungszeile mit kleinen Serifen an den Enden)?
Es gibt vielleicht einen besseren Weg, um das zu tun, was ich will: Ich habe ein Layout mit einem EditText. Normalerweise wird dies gut angezeigt, wenn der Benutzer darauf tippen und mit der Eingabe oder Bearbeitung von Text beginnen kann.
Manchmal möchte ich jedoch dasselbe Layout verwenden (vereinfacht andere Logik), um dieselben Daten schreibgeschützt anzuzeigen. Ich möchte, dass die Präsentation ähnlich ist - sie sollte dieselbe Höhe und dieselbe Schriftart haben, aber nicht die Unterleiste.
Als Stop-Gap-Maßnahme werde ich dies implementieren, indem ich den EditText entferne und eine Textansicht ersetze. Ich denke, das wird zu den gewünschten Ergebnissen führen, aber es scheint ein Kreisverkehr zu sein, der eine teure Möglichkeit darstellt, etwas zu tun, das durch Ändern der Attribute einfach zu tun sein sollte.
quelle
Antworten:
Sie können festlegen
EditText
, dass ein benutzerdefiniertes transparentes Zeichenelement verwendet wird, oder es einfach verwendenoder
oder programmatisch
quelle
android:background="@android:color/transparent"
android:background="@android:color/transparent"
verursacht die Verwendung das gleiche Problem mit dem Verlust von Margen ... Gibt es irgendwo ein Beispiel dafür, dass jemand ein solches benutzerdefiniertes Zeichen erstellt?Setzen Sie den Hintergrund auf null.
quelle
android:background="@android:color/transparent
weil@null
es beängstigend ist.@null
beängstigend?Sie können einstellen ,
EditText
‚s -backgroundTint
Wert auf eine bestimmte Farbe. Wenn Sie eine transparente Farbe festlegen, sollte die Unterleiste verschwunden sein.android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
Sie können dies jedoch in
Api v21(Lollipop)
oder höher verwendenquelle
Bitte stellen Sie Ihren Edittext-Hintergrund als ein
android:background="#00000000"
Es wird klappen.
quelle
Sie können dies programmgesteuert tun, indem Sie
setBackgroundResource
:quelle
Was ich getan habe, war, eine Form zum Zeichnen zu erstellen und diese als Hintergrund festzulegen:
Hinweis: Ich habe tatsächlich
@dimen
und@color
Werte für die Firelds verwendet, aber ich habe die Formdatei hier aus Gründen der Übersichtlichkeit vereinfacht.quelle
Verwenden einer der beiden Eigenschaften:
ODER
arbeitete für mich, um die Unterstreichung des EditText zu verbergen.
Beachten Sie jedoch, dass es dann zu einem Abstandsproblem mit dem TextInputLayout kommt, das ich umgibt
EditText
quelle
Hier ist eine Möglichkeit, es auszublenden, ohne die Standardauffüllung zu ruinieren:
Verwendungszweck:
Aktualisieren:
Wenn Sie feststellen, dass Sie immer null übergeben, können Sie dies in der Methode kodifizieren (und dann können Sie EditText selbst genauso gut überladen).
quelle
Sie müssen auch eine minWidth einstellen, sonst verschwindet der Cursor, wenn der Text leer ist.
quelle
In meinem Fall habe ich einen benutzerdefinierten Hintergrund zum Bearbeiten von Text verwendet, daher war es nicht die Lösung für mich, den Hintergrund auf @null oder den Farbton auf transparent zu setzen, also habe ich einen kleinen Streich gespielt, der für mich sehr gut funktioniert hat
und es erledigt die Arbeit ziemlich gut. Es ist nicht die optimale Lösung, aber es funktioniert
quelle
Ich habe so etwas, was sehr, sehr nützlich ist:
Dabei ist generalEditText mein EditText und die Farbe Weiß ist:
Dadurch wird die Polsterung nicht entfernt und Ihr EditText bleibt unverändert. Nur die untere Zeile wird entfernt. Manchmal ist es sinnvoller, dies so zu tun.
Wenn Sie
android:background="@null"
so viele verwenden, wie vorgeschlagen, verlieren Sie die Polsterung und EditText wird kleiner. Zumindest war es mein Fall.Eine kleine Randnotiz ist: Wenn Sie den Hintergrund auf Null setzen und den oben angegebenen Java-Code ausprobieren, stürzt Ihre App direkt nach der Ausführung ab. (weil es den Hintergrund bekommt, aber null ist.) Es mag offensichtlich sein, aber ich denke, es ist wichtig, darauf hinzuweisen.
quelle
Ich habe das Merkwürdigste entdeckt! Wenn Sie die
null
Datenbindung verwenden:android:background="@{null}"
Dann wird nicht nur der Hintergrund entfernt, sondern die Ansicht enthält immer noch den Abstand, der aus dem Standardhintergrund berechnet wurde. Aus irgendeinem Grund löscht die verzögerte Null-Einstellung nicht die Auffüllung des vorherigen bg ..? Die Auffüllung in der Ansicht ist links / oben / rechts 4dp, unten 13dp (ab Emulatorstufe 21).
Möglicherweise wird nicht auf allen API-Ebenen das gleiche Endergebnis erzielt. Seien Sie also vorsichtig! Jemand sagt mir, ob Sie dies testen und es für zuverlässig halten. (Beachten Sie auch, dass das untere Polster aufgrund der Unterstreichung im Original hervorsteht. Sie sollten es also wahrscheinlich im XML ändern oder im Code zurücksetzen, nachdem es auf das gleiche obere Niveau geladen wurde ...
quelle
Wenn Ihr Bearbeitungstext bereits einen Hintergrund hat, können Sie Folgendes verwenden.
quelle
Wenn Sie möchten, dass dies alle Instanzen von EditText und alle von ihm geerbten Klassen betrifft, sollten Sie in Ihrem Design den Wert für das Attribut editTextBackground festlegen.
Ein Beispiel für das von mir verwendete Zeichen ist:
Dies ist eine leicht modifizierte Version der Standardimplementierung für das Materialdesign.
Wenn es angewendet wird, entfernt Ihr gesamter EditText die Unterstreichung in der gesamten App, und Sie müssen den Stil nicht manuell auf jeden einzelnen anwenden.
quelle
Verwenden Sie dies einfach
quelle
Sie können auch einen STIL für Ihren editText definieren, um alle Eigenschaften gemeinsam zu gruppieren. Es ist sehr leistungsfähig, wenn Sie mehrere Texte bearbeiten müssen, die das Verhalten haben müssen
Fügen Sie den Code in res / values / styles.xml ein
Danach müssen Sie es nur noch in Ihrem editText aufrufen
quelle
Programmatisch verwenden:
editText.setBackground(null)
Vom
xml
Gebrauch:android:background="@null"
quelle
Oder
quelle
android: inputType = "textVisiblePassword | textMultiLine" android: background = "@ android: color / transparent"
... es ist nicht die optimale Lösung, aber es funktioniert.
quelle
Setzen Sie den Hintergrund auf null
quelle
In meinem Fall
editText.setBackgroundResource(R.color.transparent);
ist am besten.Die Standardauffüllung wird nicht entfernt, nur unter der Leiste.
R.color.transparent = #00000000
quelle
Wenn Sie Hintergrund verwenden, müssen Sie dieses Tag verwenden
quelle
Um sowohl die Ränder als auch die Hintergrundfarbe beizubehalten, verwenden Sie:
background.xml
Text bearbeiten:
quelle