it-roy-ru.com

Изменить цвет подсказки 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>
112
SamIAmHarris

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

Android:theme="@style/com_mixpanel_Android_SurveyActivityTheme"

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

4
SamIAmHarris

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

Источник

129
mbelsky

Создать custom 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 добавьте theme attribute, как показано ниже 

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

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

60
Deekshith R Moolya

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

Android:textColorHint="#F6F6F6"

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

39
Cherry admin

получил ту же проблему. Решено, поместив эти строки в 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>

Если вы положите эти 

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

39
SajithK

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

 <!-- 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>
16
Rajiv Manivannan

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

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 и colorControlActivation не требуются 

10
Summved Jain

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

Android:textColorHint="someColor"
10
Brent Ray

Много ответов, но для этого нужна только строка:

Android: textColorHint = "# 000000"

    <EditText
        Android:id="@+id/edtEmail"
        Android:textColorHint="#000000"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"/>
9
Diego Venâncio

Вы можете использовать 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>
8
Sonia Rana

Согласно этому. 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

7
Da DUAN

попробуйте это может это помочь  

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

        }
    });
4
jeet parmar
        <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.

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

измените ваш colorAccent на нужный вам цвет внутри вашей темы, это изменит вашу строку 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>
2
Sarmad Aijaz

поздно, но это может помочь кому-то, что я сделал, как это

<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>
1
Mateen Chaudhry

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

0
Biro Csaba

Попробуйте код ниже:

Высокий светлый цвет белый:

 <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>
0
Chhornkimchheng
 <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>``
0
Syed Danish Haider