it-swarm.com.de

So ändern Sie den Stil eines Standard-EditText

Ich schreibe drei EditText in meiner XML-Datei, die Code wie folgt verwendet.

<EditText
            Android:id="@+id/name_edit_text"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_below="@+id/profile_image_view_layout"
            Android:layout_centerHorizontal="true"
            Android:layout_marginLeft="10dp"
            Android:layout_marginRight="10dp"
            Android:layout_marginTop="20dp"
            Android:ems="15"
            Android:hint="@string/name_field"
            Android:inputType="text" />

Wenn ich die App starte, sieht es auf meinem Gerät so aus.

enter image description here

Aber ich möchte aussehen, ohne ein Hintergrundbild zu verwenden.

enter image description here

Wie kann das gemacht werden? Jede Idee oder Anregung wird hilfreich sein.

31
Rahul

Sie haben einige Möglichkeiten.

  1. Verwenden Sie Android assets studiosAndroid Holo-Farbgenerator , um Ressourcen, Stile und Designs zu generieren, die Sie Ihrer App hinzufügen müssen, um den Holo-Look auf allen Geräten zu erhalten.

  2. Verwenden Sie Holo überall Bibliothek.

  3. Verwenden Sie das PNG für die Holo-Textfelder und legen Sie diese selbst als Hintergrundbilder fest. Sie können die Bilder über den Holo-Farbgenerator von Android Assets Studios erhalten. Sie müssen ein Zeichen erstellen und die normalen, ausgewählten und deaktivierten Zustände definieren.

UPDATE 2016-01-07

Diese Antwort ist jetzt veraltet. Android verfügt über eine Tönungs-API und die Möglichkeit, Steuerelemente jetzt direkt zu gestalten. Eine gute Referenz für das Stylen oder Design eines Elements ist eine Site namens materialdoc .

26
Ali

Erstellen Sie eine XML-Datei wie edit_text_design.xml und speichern Sie sie in Ihrem Zeichenordner 

Ich habe die Farbcodes nach meiner Wahl angegeben. Bitte ändern Sie die Farbcodes nach Ihrer Wahl!

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

<item>
    <shape>
        <solid Android:color="#c2c2c2" />
    </shape>
</item>

<!-- main color -->
<item
    Android:bottom="1.5dp"
    Android:left="1.5dp"
    Android:right="1.5dp">
    <shape>
        <solid Android:color="#000" />
    </shape>
</item>

<!-- draw another block to cut-off the left and right bars -->
<item Android:bottom="5.0dp">
    <shape>
        <solid Android:color="#000" />
    </shape>
</item>

</layer-list>

ihr Bearbeitungstext sollte ihn als Hintergrund enthalten:

add Android: background = "@ drawable/edit_text_design" zu allen EditText's 

und Ihr obenstehender EditText sollte jetzt so aussehen:

      <EditText
        Android:id="@+id/name_edit_text"
        Android:background="@drawable/edit_text_design"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/profile_image_view_layout"
        Android:layout_centerHorizontal="true"
        Android:layout_marginLeft="10dp"
        Android:layout_marginRight="10dp"
        Android:layout_marginTop="20dp"
        Android:ems="15"
        Android:hint="@string/name_field"
        Android:inputType="text" />
37
Tarsem Singh

Ich habe dasselbe Problem vor 10 Minuten gelöst, daher gebe ich Ihnen eine kurze, effektive Lösung: Platzieren Sie diese in das Anwendungs-Tag oder in Ihr Manifest:

 Android:theme="@Android:style/Theme.Holo"

Legen Sie in der grafischen Ansicht des Layouts auch das Design Ihres XML-Layouts auf Holo fest.

Bibliotheken sind hilfreich, wenn Sie kompliziertere Themen ändern müssen. Diese kleine Korrektur wird jedoch funktionieren, sodass Sie mit Ihrer App weitermachen können.

8
Josh

Ich verwende den folgenden Code. Prüfen Sie, ob es hilft.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <item>
        <shape Android:shape="rectangle" >
            <solid Android:color="#00f" />
            <padding Android:bottom="2dp" />
        </shape>
    </item>
    <item Android:bottom="10dp">
        <shape Android:shape="rectangle" >
            <solid Android:color="#fff" />

            <padding
                Android:left="2dp"
                Android:right="2dp" />
        </shape>
    </item>
    <item>
        <shape Android:shape="rectangle" >
            <solid Android:color="#fff" />
        </shape>
    </item>
</layer-list>
5
user2743811

edittext_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:drawable="@drawable/edittext_pressed" Android:state_pressed="true" /> <!-- pressed -->
    <item Android:drawable="@drawable/edittext_disable" Android:state_enabled="false" /> <!-- focused -->
    <item Android:drawable="@drawable/edittext_default" /> <!-- default -->
</selector>

edittext_default.xml

       <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <item>
        <shape Android:shape="rectangle" >
            <solid Android:color="#BBDEFB" />
            <padding Android:bottom="2dp" />
        </shape>
    </item>
    <item Android:bottom="5dp">
        <shape Android:shape="rectangle" >
            <solid Android:color="#fff" />

            <padding
                Android:left="0dp"
                Android:right="0dp" />
        </shape>
    </item>
    <item>
        <shape Android:shape="rectangle" >
            <solid Android:color="#fff" />
        </shape>
    </item>
</layer-list>

edittext_pressed.xml

 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <item>
        <shape Android:shape="rectangle" >
            <solid Android:color="#00f" />
            <padding Android:bottom="2dp" />
        </shape>
    </item>
    <item Android:bottom="5dp">
        <shape Android:shape="rectangle" >
            <solid Android:color="#fff" />

            <padding
                Android:left="0dp"
                Android:right="0dp" />
        </shape>
    </item>
    <item>
        <shape Android:shape="rectangle" >
            <solid Android:color="#fff" />
        </shape>
    </item>

</layer-list>

edittext_disable.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
        <item>
            <shape Android:shape="rectangle" >
                <solid Android:color="#aaaaaa" />
                <padding Android:bottom="2dp" />
            </shape>
        </item>
        <item Android:bottom="5dp">
            <shape Android:shape="rectangle" >
                <solid Android:color="#fff" />

                <padding
                    Android:left="0dp"
                    Android:right="0dp" />
            </shape>
        </item>
        <item>
            <shape Android:shape="rectangle" >
                <solid Android:color="#fff" />
            </shape>
        </item>

    </layer-list>

es funktioniert gut ohne neun Patches Api 10 +  enter image description here

4
Samet öztoprak

Jetzt für AppCompatEditText 

Hinweis: Wir müssen app verwenden: backgroundTint anstelle von Android: backgroundTint

<Android.support.v7.widget.AppCompatEditText
   Android:layout_width="match_parent"
   Android:layout_height="wrap_content"
   Android:hint="Underline color change"
    app:backgroundTint="@color/blue_gray_light" />
0
MilapTank