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.
Mais je veux donner un aspect sans utiliser aucune image de fond.
Alors, comment cela peut-il être fait? Toute idée ou suggestion sera utile.
Vous avez quelques options.
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.
Utilisez holo partout bibliothèque.
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.
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" />
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.
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>
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>
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" />