Réponses:
C'est le meilleur outil que vous pouvez utiliser pour toutes les vues et son GRATUIT grâce à @ Jérôme Van Der Linden .
Le générateur de couleurs Android Holo vous permet de créer facilement des composants Android tels que EditText
ou spinner avec vos propres couleurs pour votre application Android. Il générera tous les neuf actifs de correctifs nécessaires, ainsi que les styles et les dessins XML associés que vous pouvez copier directement dans votre projet.
MISE À JOUR 1
Ce domaine semble expiré mais le projet est une source ouverte que vous pouvez trouver ici
essayez-le
cette image mise en arrière-plan de EditText
android:background="@drawable/textfield_activated"
MISE À JOUR 2
Pour API 21 ou supérieur, 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" />
Update 3
Maintenant, nous avons avec le support arrièreAppCompatEditText
Remarque: Nous devons utiliser app: backgroundTint au lieu d' 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 les EditText
travaux uniquement sur API21 + . Pour cette raison, nous devons utiliser la bibliothèque de support et AppCompatEditText
.
Remarque: nous devons utiliser app:backgroundTint
au lieu deandroid:backgroundTint
Version AndroidX
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
Vous pouvez également modifier rapidement la couleur de soulignement de l'EditText en teintant l'arrière-plan de l'EditText comme suit:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
pour l' API inférieure à 21, vous pouvez utiliser l'attribut de thème dans le EditText
code ci-dessous dans le fichier de style
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
utiliser ce style en EditText
tant que
<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" />
Par programme, vous pouvez essayer:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
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="AddressBookStyle" 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>
</style>
<android.support.v7.widget.AppCompatEditText
style="@style/AddressBookStyle"/>
Pour modifier la couleur de soulignement d'Edittext:
Si vous souhaitez que l'application entière partage ce style, vous pouvez procéder de la manière suivante.
(1) allez 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 dans votre application. Changez le nom de celui-ci en «AppBaseTheme». Créez un autre style juste en dessous qui porte le nom d'AppTheme et hérite d'AppBaseTheme que vous venez de modifier. Il 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>
Puis changez le "colorAccent" en quelle que soit la couleur que vous voulez que votre couleur de ligne EditText soit.
(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 supérieur. Changez son parent en AppBaseTheme et assurez-vous de vous débarrasser de «colorAccent» afin qu'il ne remplace pas la couleur du parent. Vous devez également conserver les éléments spécifiques à la version 19. Ensuite, cela ressemblera à ceci.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
C'est assez simple (Requis: API 21 minimum) ...
Continuez à coder ........ :)
La couleur de la ligne est définie par EditText
la propriété background de. Pour le changer, vous devez changer le android:background
dans le fichier de mise en page.
Je dois noter que ce style est obtenu en utilisant un dessinable à 9 patchs. Si vous regardez dans le SDK, vous pouvez voir que l'arrière-plan du EditText
est cette image:
Pour le changer, vous pouvez l'ouvrir dans un programme de manipulation d'image et le colorier dans la couleur souhaitée. Enregistrez-le sous bg_edit_text.9.png
, puis placez-le dans votre dossier dessinable. Maintenant, vous pouvez l'appliquer comme arrière-plan à votre EditText
goût:
android:background="@drawable/bg_edit_text"
Vous pouvez changer la couleur de EditText par programme en utilisant simplement cette ligne de code:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
L'arrière-plan des widgets dépend du niveau de l'API .
ALTERNATIVE 1
Vous pouvez fournir une image personnalisée à votre EditText
arrière - plan en
android:background="@drawable/custom_editText"
Votre image devrait ressembler à ceci. Il vous donnera l'effet souhaité.
ALTERNATIVE 2
Définissez ce xml sur votre EditText
attribut d'arrière - plan.
<?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 le même aspect et la même sensation que votre EditText
sur chaque API.
Vous pouvez changer la couleur en teintant l'arrière-plan
<EditText
android:backgroundTint="@color/red"/>
drawable / bg_edittext.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="@android:color/transparent" />
</shape>
</item>
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/colorDivider" />
</shape>
</item>
</layer-list>
Définir sur EditText
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
Utilisez cette méthode .. et modifiez-la selon les noms de vos vues. 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());
}
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 l'edittext focalisé.
La meilleure approche consiste à utiliser un attribut AppCompatEditText
with backgroundTint
d' app
espace de noms. c'est à dire
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
lorsque nous l'utilisons, android:backgroundTint
cela ne fonctionne que dans API21 ou plus, mais app:backgroundTint
fonctionne à tous les niveaux d'API.
<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 à faire avec vue **
Essayez la méthode suivante, elle convertira la couleur de la ligne du bas 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>