Ответ 1
Похоже, что у родительского представления был стиль для сторонней библиотеки, который заставлял EditText быть белым.
android:theme="@style/com_mixpanel_android_SurveyActivityTheme"
Как только я удалил все, все работало нормально.
Я использую новый 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>
Похоже, что у родительского представления был стиль для сторонней библиотеки, который заставлял EditText быть белым.
android:theme="@style/com_mixpanel_android_SurveyActivityTheme"
Как только я удалил все, все работало нормально.
Определите 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>
Создайте пользовательский стиль в 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>
Затем в вашем 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>
надеюсь, что это работает
Добавить свойство textColorHint в текст редактирования
android:textColorHint="#F6F6F6"
или любой цвет, который вы хотите
получил ту же проблему. Решено, поместив эти строки в тему parent.
<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, он не появится. Вы HAVE, чтобы поместить его в родительскую тему приложения.
Я не уверен, что заставляет проблему поставить этот код для меня отлично. Я думаю, что это имеет какое-то отношение к использованию правильного пространства имен xml (xmlns
). Я не уверен, что поддерживается поддержка android.support.design без атрибута пространства имен 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>
В TextInputLayout, который содержит EditText, добавьте:
android:textColorHint="someColor"
android: textColorHint = "# FFFFFF" когда-то работает, а когда-то не работает. Для меня ниже решение отлично работает
Попробуйте приведенный ниже код. Он работает в вашем XML файле, а тема TextLabel определена в файле 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>
В папке "Стили" 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"/>
Вы можете использовать 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>
В соответствии с этим: 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
попробуйте, это может помочь
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();;
}
});
<item name="colorAccent">@android:color/black</item>
измените свой цвет на ваш желаемый цвет внутри вашей темы, это изменит вашу строку EditText, курсор, а также ваш подсказку
или вы также можете включить этот стиль в свой стиль 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>
то внутри вашего 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: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.
поздно, но это может помочь кому-то, что я сделал, как это
<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>
Вы должны установить цвет подсказки в 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>''
С помощью библиотеки компонентов материала вы можете настроить TextInputLayout
цвет текста подсказки, используя:
В макете:
app:hintTextColor
атрибут: цвет метки, когда она свернута и текстовое поле активноandroid:textColorHint
атрибут: цвет надписи во всех других состояниях текстового поля (например, в состоянии покоя и отключен)Что-то вроде:
<com.google.android.material.textfield.TextInputLayout
app:hintTextColor="@color/mycolor"
android:textColorHint="@color/text_input_hint_selector"
.../>
Попробуйте код ниже:
Высокий светлый цвет белый:
<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>
Вот мой опыт с этой похожей проблемой и требуемое решение.
Требование:
TextInputEditText
(можно сказать, что некоторые должны быть прозрачными, а некоторые - нет, но использовать собственные цвета для различных событий)Проблема столкнулась:
android:textColorHint
не работает должным образом.Решения, которые не удалось:
android:textColorHint
в стиле и применяется к TextInputEditText
. Нет результатов или разницы.android:textColorHint
в теме приложения. Это помогло, но теперь оно было установлено для всего приложения. (Не соответствует требованиям) После большого количества RnD лучшее решение было найдено в статье, в которой описывалось, что нам нужно применить тему к TextInputLayout
или к его родительскому представлению, а не только применять стиль к TextInputEditText
или к его родительскому представлению.
Пожалуйста, проверьте правильность темы TextInputLayout, в которой говорится, что мы на неправильном пути.