Je crée un EditText dans mon fichier XML de mise en page
Mais je veux changer la ligne de couleur dans EditText de Holo à (par exemple) red . Comment cela peut-il être fait?
C’est le meilleur outil que vous pouvez utiliser pour toutes les vues et GRATUITEMENT grâce à @ Jérôme Van Der Linden .
Android Holo Colors Generator vous permet de créer facilement des composants Android tels que EdiText
ou spinner avec vos propres couleurs pour votre application Android. Il générera tous les neuf actifs de correctif nécessaires, ainsi que les styles et dessins XML que vous pouvez copier directement dans votre projet.
UPDATE 1
Ce domaine semble expiré mais le projet est open source, vous pouvez le trouver ici
l'essayer
cette image mise en arrière-plan de EditText
Android:background="@drawable/textfield_activated"
UPDATE 2
Pour API 21 ou supérieure, vous pouvez utiliser Android:backgroundTint
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="Underline color change"
Android:backgroundTint="@Android:color/holo_red_light" />
Mise à jour 3 Nous avons maintenant avec le support précédent 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" />
Je n'aime pas les réponses précédentes. La meilleure solution consiste à utiliser:
<Android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
Android: backgroundTint pour EditText fonctionne uniquement sur API21 + . À cause de cela, nous devons utiliser la bibliothèque de support et AppCompatEditText .
Note: nous devons utiliser app: backgroundTint au lieu de Android: backgroundTint.
Vous pouvez également changer rapidement la couleur de soulignement de EditText en colorant l’arrière-plan de EditText de la manière suivante:
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="Something or Other"
Android:backgroundTint="@Android:color/holo_green_light" />
Par programme, vous pouvez essayer:
editText.getBackground().mutate().setColorFilter(getResources().getColor(Android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
pour les api inférieurs à 21, vous pouvez utiliser l'attribut theme dans edittext.
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
utiliser ce style dans edittext comme
<EditText Android:id="@+id/etPassword"
Android:layout_width="match_parent"
Android:layout_height="@dimen/user_input_field_height"
Android:layout_marginTop="40dp"
Android:hint="@string/password_hint"
Android:theme="@style/MyEditTextTheme"
Android:singleLine="true" />
je pense que le meilleur moyen est par thème:
<style name="MyEditTextTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorControlNormal">@color/black</item>
<item name="colorControlActivated">@color/action_blue</item>
<item name="colorControlHighlight">@color/action_blue</item>
</style>
<style name="addressbookitem_edit_style" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="Android:layout_width">match_parent</item>
<item name="Android:layout_height">wrap_content</item>
<item name="Android:textSize">13sp</item>
<item name="Android:theme">@style/MyEditTextTheme</item>
<Android.support.v7.widget.AppCompatEditText
style="@style/addressbookitem_edit_style"/>
Pour changer la couleur de soulignement d’Edittext:
Si vous souhaitez que l'ensemble de l'application partage ce style, procédez comme suit.
(1) aller dans le fichier styles.xml. Votre AppTheme qui hérite du parent de Theme.AppCompat.Light.DarkActionBar (dans mon cas) sera le parent de base de tous les fichiers de style de votre application. Changez le nom de celui-ci en «AppBaseTheme». Créez un autre style juste en dessous, portant le nom AppTheme et héritant d'AppBaseTheme que vous venez de modifier. Cela ressemblera à ceci:
<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<!--see http://www.google.com/design/spec/style/color.html#color-color-palette-->
<item name="colorPrimary">@color/material_brown_500</item>
<item name="colorPrimaryDark">@color/material_brown_700</item>
<item name="colorAccent">@color/flamingo</item>
<style name="AppTheme" parent="AppBaseTheme">
<!-- Customize your theme here. -->
</style>
Modifiez ensuite le paramètre «colorAccent» en fonction de la couleur souhaitée pour la couleur de la ligne EditText.
(2) Si vous avez d'autres dossiers de valeurs avec style.xml, cette étape est très importante. Parce que ce fichier héritera de votre précédent fichier XML parent. Par exemple, j'ai values-19/styles.xml. Ceci est spécifiquement pour KitKat et ci-dessus. Modifiez son parent en AppBaseTheme et assurez-vous de vous débarrasser de «colorAccent» afin qu’il ne remplace pas la couleur du parent. Aussi, vous devez conserver les éléments spécifiques à la version 19. Cela ressemblera à ceci.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="Android:windowTranslucentStatus">true</item>
</style>
</resources>
La couleur de la ligne est définie par la propriété background de EditText
. Pour le changer, vous devez changer le Android:background
dans le fichier de disposition.
Je dois noter que ce style est obtenu en utilisant un dessin à 9 patchs. Si vous regardez dans le SDK, vous pouvez voir que le fond de la EditText
est cette image:
Pour le changer, vous pouvez l'ouvrir dans un programme de manipulation d'images et le colorer dans la couleur souhaitée. Enregistrez-le sous le nom bg_edit_text.9.png
et placez-le dans votre dossier pouvant être dessiné. Vous pouvez maintenant l’appliquer comme fond d’écran pour votre EditText
comme ceci:
Android:background="@drawable/bg_edit_text"
C'est assez simple (Obligatoire: Minimum API 21) ...
Gardez le codage ........ :)
Vous pouvez changer la couleur en colorant l’arrière-plan
<EditText
Android:backgroundTint="@color/red"/>
L'arrière-plan des widgets est Dépend du niveau de l'API .
ALTERNATIVE 1
Vous pouvez fournir une image personnalisée à votre arrière-plan EditText
en
Android:background="@drawable/custom_editText"
Votre image devrait ressembler à quelque chose comme ça. Cela vous donnera l'effet désiré.
ALTERNATIVE 2
Définissez ce xml sur votre attribut d'arrière-plan EditText
.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" Android:padding="10dp">
<solid Android:color="#4C000000"/>
<corners Android:bottomRightRadius="5dp"
Android:bottomLeftRadius="5dp"
Android:topLeftRadius="5dp"
Android:topRightRadius="5dp"/>
</shape>
Cela aura la même apparence de votre EditText
sur chaque API.
Si vous voulez une ligne plate, vous pouvez le faire facilement avec XML. Voici l'exemple xml:
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:top="-1dp"
Android:left="-1dp"
Android:right="-1dp"
Android:bottom="1dp"
>
<shape Android:shape="rectangle">
<stroke Android:width="1dp" Android:color="#6A9A3A"/>
</shape>
</item>
</layer-list>
Remplacez la forme par un sélecteur si vous souhaitez fournir une largeur et une couleur différentes pour un edittext concentré.
Vous pouvez modifier la couleur de EditText par programme en utilisant simplement cette ligne de code: edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Utilisez cette méthode .. et modifiez-la en fonction de vos noms de vue. Ce code fonctionne très bien.
private boolean validateMobilenumber() {
if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) {
input_layout_mobilenumber.setErrorEnabled(true);
input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber));
// requestFocus(mobilenumber);
return false;
} else {
input_layout_mobilenumber.setError(null);
input_layout_mobilenumber.setErrorEnabled(false);
mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable());
}
La meilleure approche consiste à utiliser un AppCompatEditText
avec backgroundTint
attribut de app
namespace. c'est à dire.
<Android.support.v7.widget.AppCompatEditText
Android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
Android:layout_height="wrap_content" />
lorsque nous utilisons Android:backgroundTint
, cela ne fonctionne que dans API21 ou plus, mais app:backgroundTint
fonctionne avec tous les niveaux d'API de votre application.
<EditText
Android:id="@+id/et_password_tlay"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="Password"
Android:textColorHint="#9e9e9e"
Android:backgroundTint="#000"
Android:singleLine="true"
Android:drawableTint="#FF4081"
Android:paddingTop="25dp"
Android:textColor="#000"
Android:paddingBottom="5dp"
Android:inputType="textPassword"/>
<View
Android:id="@+id/UnderLine"
Android:layout_width="match_parent"
Android:layout_height="1dp"
Android:layout_below="@+id/et_password_tlay"
Android:layout_centerHorizontal="true"
Android:background="#03f94e" />
** c'est un de faire avec vue **
Essayez de la manière suivante, il convertira la couleur de la ligne inférieure de EditText, lorsqu'elle est utilisée comme propriété d'arrière-plan.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:left="@dimen/spacing_neg"
Android:right="@dimen/spacing_neg"
Android:top="@dimen/spacing_neg">
<shape>
<solid Android:color="@Android:color/transparent" />
<stroke
Android:width="@dimen/spacing_1"
Android:color="@Android:color/black" />
</shape>
</item>
</layer-list>
Utilisez Android: propriété d'arrière-plan pour cet edittext. Passez-y votre image de dossier pouvant être dessinée . Par exemple,
Android:background="@drawable/abc.png"
Cela peut être fait simplement en incluant cet Android:theme="@style/AppTheme.AppBarOverlay
comme attribut dans votre editText .__ et en ajoutant ceci <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
à vos styles
drawable/bg_edittext.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:gravity="bottom">
<shape>
<size Android:height="1dp" />
<solid Android:color="@Android:color/black" />
</shape>
</item>
</layer-list>
Définissez sur EditText
<Android.support.v7.widget.AppCompatEditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/bg_edittext"/>