web-dev-qa-db-ja.com

TextInputLayoutを使用するときにEditTextヒントの色を変更する

デザインライブラリの新しいTextInputLayoutを使用しています。浮遊ラベルの色を変えて表示させることができます。残念ながら、実際のEditTextヒントは常に白です。

私はXML、スタイル、そしてプログラムでhintColorを変更してみました。そしてまたAndroid.support.v7.widget.AppCompatEditTextを使ってみましたが、EditTextヒントは常に白を示しています。

これが私のTextInputLayoutEditTextのXMLです。

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

親ビューがサードパーティのライブラリのスタイルを持っていて、EditTextが白になっているように見えます。

Android:theme="@style/com_mixpanel_Android_SurveyActivityTheme"

これを削除すると、すべてうまくいきました。

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

出典

146
mbelsky

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>

これがうまくいくことを願っています

65

同じ問題がありました。これらの行をテーマに入れることで解決しました。

 <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に適用すると表示されません。あなたは持っていますそれをアプリケーションの親テーマに入れます。

42
SajithK

編集テキストにtextColorHintプロパティを追加します。

Android:textColorHint="#F6F6F6"

またはあなたが望む色

41
Cherry admin

私はあなたの問題の原因がこのコードを完璧に機能させるのかよくわかりません。正しいxml名前空間(xmlns)を使うことと関係があると思います。 xml名前空間属性なしでAndroid.support.designを使用することがサポートされているかどうかわかりません。あるいは、EditText自体で使用しているtextColorHint属性と関係があります。

レイアウト:

<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>
19
Rolf ツ

それは私のために働いた以下のコードを参照してください。しかし、それはあなたのすべてのコントロールの色に影響します。

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

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コード

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

ラベルの色をfalse状態に変更したいだけの場合は、colorAccent、colorControlNormal、およびcolorControlActivatedは必要ありません。

11
Summved Jain

EditTextを保持するTextInputLayoutに、以下を追加します。

Android:textColorHint="someColor"
11
Brent Ray

たくさんの答えがありますが、このために必要なのは1行だけです。

Android:textColorHint = "#000000"

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

TextInputlayoutの中でAndroid:textColorHint="@color/color_black"を使うことができます。

<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>
9
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で動作します

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

        }
    });
5
jeet parmar
<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>
4
Sarmad Shah
        <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に切り替えると、これにはっきり気付くでしょう。

3
Henry

TextInputLayoutにヒントカラーを設定する必要があります。

1
Biro Csaba

遅れていますが、それは私がこのようなことをした誰かを助けるかもしれません

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

以下のコードを試してください。

明るい色は白です。

 <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

これは私のこの同様の問題と必要な解決策についての私の経験です。

要件:

  • Customize TextInputEditTextを作成する必要があります。

問題が発生しました:

  • Android:textColorHintは要求通りに動作していません。

解決策が試行されましたが、失敗しました:

  • スタイルでAndroid:textColorHintを使用し、TextInputEditTextに適用します。結果も違いもありません。
  • 適用するアプリケーションのテーマにAndroid:textColorHintを設定します。それは役に立ちましたが、現在はアプリケーション全体に設定されています。 (要件を満たしていません)

たくさんのRnDの後、見つかった最良の解決策は、themeTextInputLayoutまたはその親ビューに適用する必要があると説明した記事にありましたstyleTextInputEditTextまたはその親ビューにのみ適用します。

TextInputLayoutの適切なTheming をチェックしてください。

0
Harpreet