90

Я использую новый TextInputLayout из библиотеки дизайна. Я могу заставить его показать и изменить цвет плавающей метки. К сожалению, текущий подсказку EditText теперь всегда белый.Изменить цвет подсказки EditText при использовании TextInputLayout

Я попытался изменить 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 (я попытался сделать атрибут черный, но ничего не сделал для меня):

<style name="GreenTextInputLayout" parent="@style/TextAppearance.AppCompat"> 
    <item name="android:textColor">@color/homestory_green</item> 
</style> 
+0

У меня такая же ошибка. Подсказка всегда «БЕЛЫЙ» цвет первоначально после касания любого editText, он принимает цвет, определенный вами. Продолжайте поиск исправления. – ch3tanz

+0

Вы пробовали ответ @Ali Kabiri. Похоже, это лучшее решение, чем мое. Мой был очень специфичен для моего проекта. – SamIAmHarris

+0

У меня есть пользовательская тема, и все цвета определены в style.xml – ch3tanz

ответ

4

Похоже, родительский вид был стиль для 3-сторонней библиотеки, которая вызывала в EditText быть белым.

android:theme="@style/com_mixpanel_android_SurveyActivityTheme" 

Как только я удалил все, все сработало нормально.

15

Я не уверен, почему ваша проблема поставила этот код для меня отлично. Я думаю, что это как-то связано с использованием правильного пространства имен 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> 
+2

Это все еще работает, как у меня. Проблема, с которой я сталкиваюсь, заключается в том, что до того, как пользователь коснется EditText, цвет EditText будет белым. Когда пользователь касается EditText, метка TextInputLayout является зеленой и работает нормально. – SamIAmHarris

+0

такой же проблема здесь @ пользователь3520299, любой удача найти исправление? – AhmedW

+0

Mine был уникальным случаем, потому что родительский вид имел набор тем, который вызывал проблему. Но код, который я установил, отлично работает после того, как я удалил одну тему. – SamIAmHarris

97

Определение 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> 

Source

+13

Не работало для меня. .. –

+0

@ TheHungryAndroider вы задали тему как тему acitvity, где вы используете текст редактирования? – mbelsky

+0

Это работает для меня, но цвет подсказки не задан при создании фрагментов и представлений. Мне нужно щелкнуть по моему «EditText», чтобы цвет подсказки был установлен на всех входах в представлении ... не нашли никакого исправления для что ('requestFocus()' и 'performClick()' не делают трюк, к сожалению). – Flawyte

4

попробовать это может эта помощь

 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();; 

     } 
    }); 
1
 <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.

11

Обратитесь к приведенному ниже коду, который сработал для меня. Но это повлияет на весь цвет ваших элементов управления.

<!-- 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> 
+0

очень спасибо, это полный ответ –

+0

Это должно быть принято - это показывает, какие свойства привыкают для каждого важных элементов. –

31

получил ту же проблему. Решено путем размещения этих строк в родительской темы.

<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 он не будет появляться. You HAVE, чтобы поместить его в родительскую тему приложения.

+3

Неудивительно, что вы не можете иметь несколько стилей ввода в приложении, используя этот виджет, но насколько я могу судить, вы правы. :/ – Turnsole

+2

Ну, не обязательно иметь его во всем приложении. Вы можете применить эту тему только к одному действию в вашем файле манифеста. И создайте еще одну тему для остальной части вашей деятельности. – RexSplode

+1

Наконец-то ответ, который решил мою проблему !! спасибо – cfl

8

В TextInputLayout, который держит EditText, добавьте:

android:textColorHint="someColor" 
+0

Это правильный ответ. – LukeWaggoner

47

Создание пользовательских стиля в 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 макета, добавить THEME атрибута, как ниже

<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> 

надеюсь, что это работает

+1

Показан «Ошибка раздувания класса EditText». Пожалуйста помоги ! –

+0

Это не работает для API 19 – Coder

6

В соответствии с этим: 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

24

Добавить textColorHint свойство вашего редактирования текста

android:textColorHint="#F6F6F6" 

или какой бы цвет вы ни хотели

8

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> 

В Styles Папка 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> 

Если вы просто хотите изменить цвет метки в ложном состоянии, а затем цветАмент, colorControlNormal и colorControlActivated не требуются

2
<item name="colorAccent">@android:color/black</item> 

изменить colorAccent до нужного цвета в вашей теме, это изменит вашу EditText линию, Cursor, а также ваш намек

или вы можете также включить этот стиль внутри 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> 
0

вы должны установить подсказку цвет на TextInputLayout.

6

много ответов, но нужно только линию для этого:

андроида: textColorHint = "# 000000"

<EditText 
     android:id="@+id/edtEmail" 
     android:textColorHint="#000000" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
2

Вы можете использовать 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> 
Смежные вопросы