web-dev-qa-db-fra.com

Comment changer le style d'un EditText par défaut

Je crée trois EditText dans mon fichier XML en utilisant un code comme celui-ci.

<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" />

Lorsque je lance l'application, cela ressemble à ceci dans mon appareil.

enter image description here

Mais je veux donner un aspect sans utiliser aucune image de fond.

enter image description here

Alors, comment cela peut-il être fait? Toute idée ou suggestion sera utile.

31
Rahul

Vous avez quelques options.

  1. Utilisez Android assets studiosGénérateur de couleurs Android Holo pour générer les ressources, les styles et les thèmes que vous devez ajouter à votre application pour obtenir le look holistique de tous les appareils.

  2. Utilisez holo partout bibliothèque.

  3. Utilisez le format PNG pour les champs de texte holo et définissez-les vous-même comme images d'arrière-plan. Vous pouvez obtenir les images du générateur de couleurs holo Android assets studios. Vous devrez dessiner et définir les états normal, sélectionné et désactivé.

UPDATE 2016-01-07

Cette réponse est maintenant obsolète. Android a teintant API et possibilité de thème sur les contrôles directement maintenant. Un site Web appelé materialdoc constitue une bonne référence pour la manière de styler ou de thème un élément.

26
Ali

Créez un fichier XML comme edit_text_design.xml et enregistrez-le dans votre dossier pouvant être dessiné. 

J'ai donné les codes de couleur selon mon choix, veuillez changer les codes de couleur selon votre choix!

 <?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>

votre texte d'édition doit le contenir en tant qu'arrière-plan:

add Android: background = "@ drawable/edit_text_design" à tous vos EditText 

et votre EditText ci-dessus devrait maintenant ressembler à ceci:

      <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

J'ai résolu le même problème il y a 10 minutes, je vais donc vous donner un petit correctif efficace: Placez-le à l'intérieur de la balise d'application ou de votre manifeste:

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

Définissez également le thème de votre mise en page XML sur Holo, dans la vue graphique de la mise en page.

Les bibliothèques seront utiles si vous devez modifier des thèmes plus complexes, mais ce petit correctif fonctionnera pour que vous puissiez passer à autre chose avec votre application.

8
Josh

J'utilise le code ci-dessous. Vérifiez si cela aide.

<?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>

cela fonctionne très bien sans Api 10 + neuf correctifs enter image description here

4
Samet öztoprak

Maintenant pour AppCompatEditText 

Remarque: Nous devons utiliser app: backgroundTint au lieu de 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