Изменение цвета подсказки EditText при использовании TextInputLayout
я использую новый TextInputLayout
из библиотеки проектирования. Я могу заставить его показать и изменить цвет плавающей метки. К сожалению фактическое EditText
подсказка теперь всегда белый.
я попытался изменить hintColor в XML, стили и программно, а также попытался использовать android.support.v7.widget.AppCompatEditText
но это EditText
подсказка всегда показывает белый.
вот мой XML для моего TextInputLayout
и 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>
и вот стиль, который я использую для TextInputLayout
(Я пытался сделать hintTextColor
атрибут черный, но ничего не сделал для меня):
<style name="GreenTextInputLayout" parent="@style/TextAppearance.AppCompat">
<item name="android:textColor">@color/homestory_green</item>
</style>
19 ответов:
определение
android:textColorHint
в тему:<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>
создать custom стиль в стиле.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>
затем в вашем XML-файле макета добавьте тема атрибута, как показано ниже
<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>
надеюсь, что это работает
получил ту же проблему. Решается путем ввода этих строк в родитель тема.
<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>
Если вы ставите эти
<item name="android:textColorHint">@color/BackgroundtWhiteColor</item> <item name="colorControlNormal">@color/BackgroundtWhiteColor</item> <item name="colorControlActivated">#ff0000</item> <item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
в отдельном стиле и применить его к TextInputLayout или Edittext он не появится. Ты есть чтобы разместить его в родительской теме приложения.
добавить textColorHint свойство для редактирования текста
android:textColorHint="#F6F6F6"
или какой цвет вы хотите
Я не уверен, что вызывает вашу проблему поставить этот код отлично работает для меня. Я думаю, что это как-то связано с использованием правильного пространства имен xml (
xmlns
). Я не уверен, если с помощью android.поддержка.поддерживается проектирование без атрибута пространства имен xml. Или это как-то связано сtextColorHint
атрибут, который вы используете на самом EditText.планировка:
<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 name="GreenTextInputLayout" parent="@android:style/TextAppearance"> <item name="android:textColor">#00FF00</item> </style>
см. ниже код работал для меня.Но это повлияет на все ваши элементы управления цветом.
<!-- 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>
android: textColorHint= "#FFFFFF " когда-то работает, а когда-то нет. Для меня ниже Решение работает отлично
попробуйте следующий код он работает в вашем XML-файле и TextLabel тема определяется в стиле.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>
В Папке Стилей 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>
Если вы просто хотите изменить цвет метки в ложном состоянии, то colorAccent, colorControlNormal и colorControlActivated не требуются
много ответов, но для этого нужна только строка:
android: textColorHint= "#000000"
<EditText android:id="@+id/edtEmail" android:textColorHint="#000000" android:layout_width="match_parent" android:layout_height="wrap_content"/>
по этому: https://code.google.com/p/android/issues/detail?id=176559
попробуйте это:
<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>
Он работает в 23.1.1
можно использовать
android:textColorHint="@color/color_black"
внутриTextInputlayout
это сработало для меня.<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>
похоже, что родительское представление имело стиль для сторонней библиотеки, которая вызывала белый цвет EditText.
android:theme="@style/com_mixpanel_android_SurveyActivityTheme"
Как только я удалил это все работало нормально.
попробуйте это может помочь
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>
используйте textColorHint, чтобы установить цвет, который вы хотите в качестве цвета подсказки для EditText. Дело в том, что Подсказка в EditText исчезает не тогда, когда вы вводите что-то, а сразу, когда EditText получает фокус (с классной анимацией). Вы заметите это ясно, когда переключите фокус прочь и к EditText.
<item name="colorAccent">@android:color/black</item>
измените colorAccent на нужный цвет внутри вашей темы,это изменит вашу строку EditText, курсор, а также вашу подсказку
или вы также можете включить этот стиль в вашем стиле.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>
тогда внутри вашего TextInputLayout вы можете поместить его так
<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>
<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>``
попробуйте код ниже:
высокий светлый цвет белый:
<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>
стиль: 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>
поздно, но это может помочь кому-то я сделал такой
<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>