J'utilise la nouvelle TextInputLayout
de la bibliothèque de conception. Je suis capable de le faire apparaître et de changer la couleur de l'étiquette flottante. Malheureusement, l'indice EditText
est toujours toujours blanc.
J'ai essayé de modifier hintColor dans XML, les styles et les programmes, ainsi que d'utiliser le Android.support.v7.widget.AppCompatEditText
.__, mais l'indicateur EditText
indique toujours le blanc.
Voici mon XML pour mes TextInputLayout
et EditText
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android.support.design:hintTextAppearance="@style/GreenTextInputLayout">
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/city"
Android:textColorHint="@color/black"
Android:hint="@string/city" />
</Android.support.design.widget.TextInputLayout>
Et voici le style que j'utilise pour la variable TextInputLayout
(j'ai essayé de rendre l'attribut hintTextColor
noir, mais je n'ai rien fait pour moi):
<style name="GreenTextInputLayout" parent="@style/TextAppearance.AppCompat">
<item name="Android:textColor">@color/homestory_green</item>
</style>
On dirait que la vue parent avait un style pour une bibliothèque tierce qui rendait le texte d'édition blanc.
Android:theme="@style/com_mixpanel_Android_SurveyActivityTheme"
Une fois que j'ai enlevé cela, tout a bien fonctionné.
Définissez Android:textColorHint
dans le thème de votre application:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="Android:textColorHint">@color/secondary_text</item>
</style>
Créer custom style dans style.xml
<style name="EditTextHint" parent="TextAppearance.AppCompat">
<item name="colorAccent">@Android:color/white</item>
<item name="Android:textColorHint">@color/BackgroundtWhiteColor</item>
<item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
<item name="colorControlActivated">@color/your color</item>
<item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
</style>
Ensuite, dans votre fichier XML de mise en page, ajoutez theme attribut comme ci-dessous
<Android.support.design.widget.TextInputLayout
Android:theme="@style/EditTextHint"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
</Android.support.design.widget.TextInputLayout>
espérons que cela fonctionne
Ajouter la propriété textColorHint à votre texte d'édition
Android:textColorHint="#F6F6F6"
ou n'importe quelle couleur que vous voulez
a le même problème. Résolu en mettant ces lignes dans parent theme.
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/ColorPrimaryDark</item>
<item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
<item name="colorAccent">@color/AccentColor</item>
<item name="Android:windowTranslucentStatus">true</item>
<item name="Android:textColorHint">@color/BackgroundtWhiteColor</item>
<item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
<item name="colorControlActivated">#ff0000</item>
<item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
<!-- Customize your theme here. -->
</style>
Si vous mettez ces
<item name="Android:textColorHint">@color/BackgroundtWhiteColor</item>
<item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
<item name="colorControlActivated">#ff0000</item>
<item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
dans un style séparé et l'appliquer à TextInputLayout ou Edittext, il n'apparaîtra pas. VousAVEZpour le placer dans le thème parent de l'application.
Reportez-vous au code ci-dessous cela a fonctionné pour moi. Mais cela affectera toutes les couleurs de vos contrôles.
<!-- In your style.xml file -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!--EditText hint color-->
<item name="Android:textColorHint">@color/default_app_white</item>
<!-- TextInputLayout text color-->
<item name="colorControlActivated">@color/default_app_green</item>
<!-- EditText line color when EditText on-focus-->
<item name="colorControlHighlight">@color/default_app_green</item>
<!-- EditText line color when EditText in un-focus-->
<item name="colorControlNormal">@color/default_app_white</item>
</style>
Je ne suis pas sûr des causes de votre problème. Ce code fonctionne parfaitement pour moi. Je pense que cela a quelque chose à voir avec l'utilisation de l'espace de nom XML correct (xmlns
). Je ne sais pas si l'utilisation d'Android.support.design sans l'attribut d'espace de nom xml est prise en charge. Ou bien cela a quelque chose à voir avec l'attribut textColorHint
que vous utilisez sur le texte d'édition lui-même.
Disposition:
<Android.support.design.widget.TextInputLayout
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
app:hintTextAppearance="@style/GreenTextInputLayout">
<Android.support.v7.widget.AppCompatEditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="test"
Android:inputType="text" />
</Android.support.design.widget.TextInputLayout>
Style:
<style name="GreenTextInputLayout" parent="@Android:style/TextAppearance">
<item name="Android:textColor">#00FF00</item>
</style>
Android: textColorHint = "# FFFFFF" fonctionne parfois et ne fonctionne parfois pas. Pour moi, la solution ci-dessous fonctionne parfaitement
Essayez le code ci-dessous, il fonctionne dans votre fichier XML et le thème TextLabel est défini dans style.xml
<Android.support.design.widget.TextInputLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:theme="@style/MyTextLabel">
<EditText
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:hint="Floating Label"
Android:id="@+id/edtText"/>
</Android.support.design.widget.TextInputLayout>
Dans le fichier de styles, code TextLabel
<style name="MyTextLabel" parent="TextAppearance.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="Android:textColorHint">@color/Color Name</item>
<!--The size of the text appear on label in false state -->
<item name="Android:textSize">20sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/Color Name</item>
<item name="colorControlNormal">@color/Color Name</item>
<item name="colorControlActivated">@color/Color Name</item>
</style>
Si vous souhaitez simplement changer la couleur de l'étiquette dans l'état false, colorAccent, colorControlNormal et colorControlActivated ne sont pas obligatoires.
Dans TextInputLayout qui contient le EditText, ajoutez:
Android:textColorHint="someColor"
Beaucoup de réponses mais n'ont besoin que d'une ligne pour cela:
Android: textColorHint = "# 000000"
<EditText
Android:id="@+id/edtEmail"
Android:textColorHint="#000000"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
Vous pouvez utiliser Android:textColorHint="@color/color_black"
dans TextInputlayout
Cela a fonctionné pour moi.
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="@dimen/dp_10"
Android:textColorHint="@color/color_black"
app:hintTextAppearance="@style/TextLabel">
<EditText
Android:id="@+id/et_state"
style="@style/profile_editTextStyle"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="@string/billingState"
Android:text="@string/billingState"
/>
</Android.support.design.widget.TextInputLayout>
Selon ceci: https://code.google.com/p/Android/issues/detail?id=176559
Essaye ça:
<Android.support.design.widget.TextInputLayout
Android:textColorHint="#A7B7C2"
Android:layout_width="match_parent"
Android:layout_height="50dp">
<EditText
Android:id="@+id/et_confirm_password"
Android:textColor="@Android:color/black"
Android:hint="Confirm password"
Android:inputType="textPassword"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</Android.support.design.widget.TextInputLayout>
Cela fonctionne dans 23.1.1
essayez ceci peut ceci aider
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "onTextChanged", 2000).show();;
//newuser.setTextColor(Color.RED);
edittext.setHintTextColor(Color.RED);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "afterTextChanged", 2000).show();;
}
});
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:id="@+id/name"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="Name"
Android:textColor="@color/black"
Android:textColorHint="@color/grey"/>
</Android.support.design.widget.TextInputLayout>
Utilisez textColorHint pour définir la couleur souhaitée en tant que couleur de conseil pour EditText. Le fait est que l'indice dans EditText disparaît pas lorsque vous tapez quelque chose, mais immédiatement lorsque EditText est activé (avec une animation cool). Vous le remarquerez clairement lorsque vous passerez au focus et au texte d'édition.
<item name="colorAccent">@Android:color/black</item>
changez votre couleurAccent sur votre couleur désirée dans votre thème, cela changera votre ligne EditText, votre curseur et votre indice
ou vous pouvez également inclure ce style dans votre style.xml
<style name="TextLabel" parent="TextAppearance.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="Android:textColorHint">@Android:color/black</item>
<item name="Android:textSize">20sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@Android:color/black</item>
<item name="colorControlNormal">@Android:color/black</item>
<item name="colorControlActivated">@Android:color/black</item>
</style>
puis à l'intérieur de votre TextInputLayout, vous pouvez le mettre comme ceci
<Android.support.design.widget.TextInputLayout
Android:id="@+id/input_layout_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/TextLabel">
<EditText
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:drawableLeft="@drawable/password"
Android:drawableStart="@drawable/password"
Android:maxLines="1"
Android:hint="password"
Android:inputType="textWebPassword" />
</Android.support.design.widget.TextInputLayout>
tard, mais cela peut aider quelqu'un que j'ai fait comme ça
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:layout_marginLeft="30dp"
Android:layout_marginStart="30dp"
Android:textColorHint="#8cffffff">
<Android.support.v7.widget.AppCompatEditText
Android:id="@+id/email_edit"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="@string/security_email"
Android:inputType="textEmailAddress"
Android:textColor="@color/white"
app:backgroundTint="#8cffffff" />
</Android.support.design.widget.TextInputLayout>
Vous devez définir la couleur de l'indice sur TextInputLayout.
Essayez le code ci-dessous:
La couleur de haute lumière est le blanc:
<Android.support.design.widget.TextInputLayout
Android:id="@+id/input_layout_mobile"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/TextStyle"
>
<EditText
Android:id="@+id/input_mobile"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:singleLine="true"
Android:drawablePadding="14dp"
Android:drawableLeft="8dp"
Android:textColor="@color/white"
Android:hint="Mobile" />
</Android.support.design.widget.TextInputLayout>
style: TextStyle
<style name="TextStyle" parent="TextAppearance.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="Android:textColorHint">@color/white</item>
<item name="Android:textSize">20sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/white</item>
<item name="colorControlNormal">@color/white</item>
<item name="colorControlActivated">@color/white</item>
</style>
Voici mon expérience avec ce problème similaire et la solution requise.
Condition:
TextInputEditText
(peut dire que certaines doivent être transparentes et que d'autres ne doivent pas l'être mais utilisent des couleurs personnalisées pour divers événements)Problème rencontré:
Android:textColorHint
ne fonctionne pas correctement.Solutions essayées mais qui échouent:
Android:textColorHint
avec style et appliqué à TextInputEditText
. Aucun résultat ou différence.Android:textColorHint
dans le thème de l'application appliqué. Cela a aidé, mais il était maintenant configuré pour une application complète. (Pas à la hauteur de l'exigence) Après beaucoup de RnD, la meilleure solution trouvée était dans un article décrivant la nécessité d'appliquer le thème à TextInputLayout
ou à sa vue parent plutôt qu’à l’application du style à TextInputEditText
ou à sa vue parent.
S'il vous plaît vérifier TextInputLayout Theming approprié qui a dit que nous sommes sur la mauvaise voie.
<Android.support.design.widget.TextInputLayout
Android:id="@+id/input_layout_passdword"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textColorHint="#d3d3d3">
<EditText
Android:id="@+id/etaddrfess_ciwty"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="@Android:color/transparent"
Android:bottomLeftRadius="10dp"
Android:bottomRightRadius="50dp"
Android:fontFamily="@font/frutiger"
Android:gravity="start"
Android:hint="@string/address_city"
Android:padding="10dp"
Android:textColor="#000000"
Android:textColorHint="#000000"
Android:textSize="14sp"
Android:topLeftRadius="10dp"
Android:topRightRadius="10dp" />
</Android.support.design.widget.TextInputLayout>``