it-swarm.com.de

So verstecken Sie die Unterleiste in EditText

Wie kann ich die EditText-Leiste (die Prompt-Zeile mit den kleinen Serifen am Ende) ausblenden?

Möglicherweise gibt es eine bessere Möglichkeit, das zu tun, was ich möchte: 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 die gleiche Höhe und Schriftart haben, aber nicht die Unterleiste.

Als Stop-Gap-Maßnahme werde ich dies implementieren, indem ich den EditText entferne und eine TextView ersetze. Ich denke, das wird die gewünschten Ergebnisse bringen, aber es scheint ein Umweg zu sein, der eine teure Möglichkeit darstellt, etwas zu tun, das durch Ändern von Attributen einfach sein sollte.

425
Peri Hartman

Sie können EditText so einstellen, dass eine benutzerdefinierte transparente Zeichnung erstellt wird, oder einfach verwenden

Android:background="@Android:color/transparent"

oder

Android:background="@null"
905
ha1ogen

Hintergrund auf null setzen.

Android:background="@null"
98
Vinayak V Naik

Sie können den Wert von EditText für backgroundTint auf eine bestimmte Farbe festlegen. Wenn Sie die transparente Farbe einstellen, 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 verwenden

27
Yasin Kaçmaz

Bitte stellen Sie Ihren edittext Hintergrund als ein

Android:background="#00000000"

Es wird klappen.

24
kishore kumar

Sie können dies programmgesteuert mit setBackgroundResource tun:

editText.setBackgroundResource(Android.R.color.transparent);
19
Roberto

Verwenden einer der folgenden Eigenschaften:

Android:background="@null"

OR

Android:background="@Android:color/transparent"

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 um das EditText gelegt habe.

15
AjayCodes

Hier ist eine Möglichkeit, es auszublenden, ohne die Standardauffüllung zu beschädigen:

fun View.setViewBackgroundWithoutResettingPadding(background: Drawable?) {
    val paddingBottom = this.paddingBottom
    val paddingStart = ViewCompat.getPaddingStart(this)
    val paddingEnd = ViewCompat.getPaddingEnd(this)
    val paddingTop = this.paddingTop
    ViewCompat.setBackground(this, background)
    ViewCompat.setPaddingRelative(this, paddingStart, paddingTop, paddingEnd, paddingBottom)
}

verwendungszweck:

editText.setViewBackgroundWithoutResettingPadding(null)
10

Was ich getan habe, war, eine Form zu erstellen, die gezeichnet werden kann, und diese als Hintergrund festzulegen:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">

    <padding
        Android:top="8dp"
        Android:bottom="8dp"
        Android:left="8dp"
        Android:right="8dp" />

    <solid Android:color="#fff" />

</shape>

Hinweis: Ich habe tatsächlich die Werte @dimen und @color für die Firelds verwendet, die Formdatei hier jedoch aus Gründen der Übersichtlichkeit vereinfacht.

10
Paul LeBeau

Sie müssen auch eine minWidth einstellen, sonst verschwindet der Cursor, wenn der Text leer ist.

        <EditText
            Android:id="@+id/et_card_view_list_name"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:minWidth="30dp"
            Android:layout_weight="1"
            Android:inputType="text"
            Android:text="Name"
            Android:background="@Android:color/transparent"
            />
5
live-love

wenn Ihr Bearbeitungstext bereits einen Hintergrund hat, können Sie Folgendes verwenden.

Android:textCursorDrawable="@null"
4
AKASH WANGALWAR

Ich habe so etwas, was sehr, sehr nützlich ist:

generalEditText.getBackground().mutate().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);

dabei ist generalEditText mein EditText und die Farbe Weiß ist:

<color name="white">#ffffff</color>

Dadurch wird das Auffüllen nicht entfernt und Ihr EditText bleibt unverändert. Nur die unterste Zeile wird entfernt. Manchmal ist es sinnvoller, das so zu machen.

Wenn Sie Android:background="@null" verwenden, verlieren Sie den Abstand und EditText wird kleiner. Zumindest war es mein Fall.

Eine kleine Randnotiz: 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 erhält, aber null ist.) Es mag offensichtlich sein, aber ich denke, es ist wichtig, darauf hinzuweisen.

4
bengongon97

Einfach verwenden

 editText.setBackgroundColor(Color.TRANSPARENT);
3
prashant kute

Wenn sich dies auf alle Instanzen von EditText und auf alle Klassen auswirken soll, die von EditText erben, sollten Sie in Ihrem Design den Wert für das Attribut editTextBackground festlegen.

  <item name="Android:editTextBackground">@drawable/bg_no_underline</item>

Ein Beispiel für das Zeichenprogramm, das ich verwende, ist:

<inset xmlns:Android="http://schemas.Android.com/apk/res/Android"
     Android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
     Android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
     Android:insetTop="@dimen/abc_edit_text_inset_top_material"
     Android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
    <selector>
      <item Android:drawable="@Android:color/transparent"/>
    </selector>
</inset>

Dies ist eine leicht geänderte 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 für jeden einzelnen manuell anwenden.

3
kingargyle

Ich habe das Neugierigste entdeckt! Wenn Sie die Datenbindung auf null setzen: Android:background="@{null}"

Dann wird nicht nur der Hintergrund entfernt, sondern die Ansicht weist immer noch den Abstand auf, der aus dem Standardhintergrund berechnet wurde. Aus irgendeinem Grund löscht die verspätete Null-Einstellung die Polsterung nicht aus dem vorherigen Hintergrund. Die Auffüllung in der Ansicht ist links/oben/rechts 4dp, unten 13dp (ab Emulatorstufe 21).

Möglicherweise ist das Endergebnis nicht auf allen API-Ebenen gleich, seien Sie also vorsichtig! Jemand sagt mir, ob Sie dies testen und für zuverlässig halten. (Beachten Sie auch, dass das untere Auffüllen aufgrund der Unterstreichung im Original hervorsteht. Daher sollten Sie es wahrscheinlich im XML-Code ändern oder im Code zurücksetzen, nachdem es auf "Gleich oben" geladen wurde.).

3
androidguy

Sie können auch einen STIL für Ihren editText definieren, um alle Eigenschaften gemeinsam zu gruppieren. Es ist sehr leistungsfähig, wenn Sie Text mehrfach bearbeiten müssen, um das Verhalten zu haben

Fügen Sie den Code in die Datei res/values ​​/ styles.xml ein

<style name="MyEditTextStyle" parent="@Android:style/TextAppearance.Widget.EditText">
    <item name="Android:background">@color/transparence</item> //NO UNDERBAR
    <item name="Android:maxLines">1</item>
    <item name="Android:height">28dp</item> //COMMON HEIGHT
</style>

Danach müssen Sie es nur noch in Ihrem editText aufrufen

                   <EditText
                    Android:id="@+id/edit1"
                    style="@style/MyEditTextStyle"
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content" />
                   <EditText
                    Android:id="@+id/edit2"
                    style="@style/MyEditTextStyle"
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content" />

Verwenden Sie programmgesteuert: editText.setBackground(null)

Aus xml verwenden Sie: Android:background="@null"

1
Shubham Kaushik
Android:background="@Android:color/transparent"

Oder

Android:background="@null"

In meinem Fall ist editText.setBackgroundResource(R.color.transparent); am besten.

Das Standardpolster wird nicht entfernt, nur unter dem Balken.

R.color.transparent = #00000000

0
HJ Song

Hintergrund auf null setzen

Android:background="@null" in your xml 
0
Jocelin

wenn Sie Hintergrund verwenden, müssen Sie dieses Tag verwenden

Android:testCursorDrawable="@null" 
0
ATIQ UR REHMAN