android - example - Cambie el color de la pista EditText cuando use TextInputLayout
textinputedittext example (20)
Agregue la propiedad textColorHint a su texto de edición
android:textColorHint="#F6F6F6"
o el color que quieras
Estoy usando el nuevo
TextInputLayout
de la biblioteca de diseño.
Puedo hacer que se muestre y cambiar el color de la etiqueta flotante.
Desafortunadamente, la sugerencia real de
EditText
ahora es siempre blanca.
Intenté cambiar hintColor en XML, estilos y mediante programación, y también intenté usar
android.support.v7.widget.AppCompatEditText
pero la sugerencia
EditText
siempre se muestra en blanco.
Aquí está mi XML para mi
TextInputLayout
y
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>
Y aquí está el estilo que estoy usando para
TextInputLayout
(intenté hacer que el atributo
hintTextColor
negro pero no hice nada por mí):
<style name="GreenTextInputLayout" parent="@style/TextAppearance.AppCompat">
<item name="android:textColor">@color/homestory_green</item>
</style>
Aquí está mi experiencia con este problema similar y la solución requerida.
Requisito:
-
Necesita crear personalizar
TextInputEditText
(puede decir que algunos deberían ser transparentes y otros no, pero usar colores personalizados para varios eventos)
Problema enfrentado:
-
android:textColorHint
no funciona como se requiere.
Soluciones probadas, que fallaron:
-
android:textColorHint
usadoandroid:textColorHint
en estilo y aplicado aTextInputEditText
. Sin resultados ni diferencia. -
Establezca
android:textColorHint
en el tema de la aplicación aplicada. Ayudó, pero ahora estaba configurado para toda la aplicación. (No cumple con los requisitos)
Después de mucho RnD, la mejor SOLUCIÓN encontrada fue en un artículo que describe que necesitamos aplicar el
tema
a
TextInputLayout
o a su vista principal en lugar de solo aplicar el
estilo
a
TextInputEditText
o a su vista principal.
Por favor, compruebe el tema apropiado de TextInputLayout, que nos dice cómo estamos en el camino equivocado.
Consulte el siguiente código que funcionó para mí, pero afectará el color de todos sus controles.
<!-- 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>
Crear estilo personalizado en 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>
Luego, en su archivo xml de diseño, agregue el atributo de tema como se muestra a continuación
<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>
espero que esto funcione
De acuerdo con esto: https://code.google.com/p/android/issues/detail?id=176559
Prueba esto:
<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>
Funciona en 23.1.1.
Debe establecer el color de la pista en TextInputLayout.
Defina
android:textColorHint
en el tema de su aplicación:
<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>
En el TextInputLayout que contiene EditText, agregue:
android:textColorHint="someColor"
Muchas respuestas pero solo necesitan una línea para esto:
android: textColorHint = "# 000000"
<EditText
android:id="@+id/edtEmail"
android:textColorHint="#000000"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
No estoy seguro de qué causa su problema, este código funciona perfectamente para mí.
Creo que tiene algo que ver con el uso del espacio de nombres xml correcto (
xmlns
).
No estoy seguro si se admite el uso de android.support.design sin el atributo de espacio de nombres xml.
O tiene algo que ver con el atributo
textColorHint
que está utilizando en el propio EditText.
Diseño:
<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>
Estilo:
<style name="GreenTextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#00FF00</item>
</style>
Parece que la vista principal tenía un estilo para una biblioteca de terceros que causaba que EditText fuera blanco.
android:theme="@style/com_mixpanel_android_SurveyActivityTheme"
Una vez que eliminé esto, todo funcionó bien.
Prueba el siguiente código:
El color de la luz alta es blanco:
<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>
estilo: 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>
Puede usar
android:textColorHint="@color/color_black"
dentro de
TextInputlayout
Me funcionó.
<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>
Tengo el mismo problema. Se resolvió poniendo estas líneas en el tema principal .
<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 pones estos
<item name="android:textColorHint">@color/BackgroundtWhiteColor</item>
<item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
<item name="colorControlActivated">#ff0000</item>
<item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
en un estilo separado y aplicarlo a TextInputLayout o Edittext no aparecerá. DEBE colocarlo en el tema principal de la aplicación.
android: textColorHint = "# FFFFFF" a veces funciona y a veces no. Para mí, la solución a continuación funciona perfectamente
Pruebe el siguiente código: funciona en su archivo XML y el tema TextLabel se define en 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>
En la carpeta de estilos TextLabel Code
<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 solo desea cambiar el color de la etiqueta en estado falso, no se requieren colorAccent, colorControlNormal y colorControlActivated
tarde pero puede ayudar a alguien que he hecho así
<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>
intente esto puede esto ayudar
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>
Use textColorHint para establecer el color que desea como color de Sugerencia para EditText. La cuestión es que la Sugerencia en EditText desaparece no cuando escribe algo, sino inmediatamente cuando EditText se enfoca (con una animación genial). Notarás esto claramente cuando cambies el foco hacia EditText.
<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>``
<item name="colorAccent">@android:color/black</item>
cambia tu colorAccent a tu color deseado dentro de tu Tema, esto cambiará tu línea EditText, Cursor, así como tu pista
o también puede incluir este estilo dentro de su 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>
entonces dentro de su TextInputLayout puede ponerlo así
<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>