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


146

TextInputLayoutデザインライブラリの新しいものを使用しています。フローティングラベルを表示したり、色を変更したりできます。残念ながら、実際のEditTextヒントは常に白くなっています。

XML、スタイル、およびプログラムでhintColorを変更してみました。また、を使用してみましたandroid.support.v7.widget.AppCompatEditText が、EditTextヒントは常に白く表示されます。

ここに私のXMLは、私のためであるTextInputLayoutEditText

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

私は同じエラーに直面しています。ヒントは常に最初は「WHITE」色で、最初はeditTextに触れた後、ユーザーが定義した色になります。まだ修正を探しています。
ch3tanz 2015年

@Ali Kabiriの答えを試してみましたか?それは私のものよりも良い解決策のようです。鉱山は私のプロジェクトに非常に特有でした。
SamIAmHarris

私は私のカスタムテーマをしましたし、すべての色がstyle.xmlで定義されている
ch3tanz

回答:


164

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>

ソース


@TheHungryAndroiderテーマを編集テキストを使用する活動のテーマに設定しましたか?
mbelsky、2015

1
それは私にとっては機能しますが、ヒントの色はフラグメントとビューの作成時にEditText設定されていません。ビュー内のすべての入力にヒントの色を設定するには、私の色をクリックする必要があります...まだ修正されていません(requestFocus()そしてperformClick()残念ながらそのトリックを実行しないでください)。
flawyte

1
属性として使用すると機能する:<EditText android:inputType = "textMultiLine" android:lines = "4" android:gravity = "top | right" android:layout_width = "fill_parent" android:layout_height = "match_parent" android:hint = "ヒントテキスト "android:textColorHint ="#919389 "/>
masoud Cheragee 2017年

75

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>

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


4
「クラスEditTextの膨張エラー」を表示しています。助けてください !
Mohit Khaitan 2016

@Coder氏が追加した属性の一部は21歳以上のもの
Mr.O

49

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

android:textColorHint="#F6F6F6"

またはあなたが欲しい色


41

同じ問題が発生しました。これらの行をテーマに配置することで解決しました。

 <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アプリケーションの親のテーマでそれを配置します。


3
このウィジェットを使用してアプリに複数の入力スタイルを設定できないのは本当にイライラしますが、私が知る限りでは、そうです。:/
ターンソール2015年

4
まあ、それはアプリケーション全体で持っている必要はありません。このテーマは、マニフェストファイル内の1つのアクティビティにのみ適用できます。そして、残りの活動のために別のテーマを作成します。
RexSplode、2015

23

あなたの問題の原因がわからないので、このコードは完璧に機能します。正しいxml名前空間(xmlns)を使用することと関係があると思います。xml名前空間属性なしでandroid.support.designの使用がサポートされているかどうかはわかりません。または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

ここに同じ問題@ user3520299、修正を見つける運がありますか?
AhmedW 2015

親ビューに問題を引き起こしているテーマセットがあったため、鉱山はユニークなケースでした。しかし、私は我慢するコードは、私が削除した後、今も元気に動作し、1つのテーマ
SamIAmHarris

1
これはフローティングヒントでは機能しますが、空のEditTextコントロール内のヒントでは機能しません。そのためには、@ mbelskyの回答
Richard Le Mesurier

ちなみに、デフォルトのapp:hintTextAppearanceスタイルは@style/TextAppearance.Design.Hintなので、それをor としてparentではなく使用したいかもしれません@android:style/TextAppearance@style/TextAppearance.AppCompat
rockgecko

19

それが私のために働いた以下のコードを参照してください。

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

これは受け入れられるべきです-重要な要素のそれぞれにどのプロパティが使用されるかを示します。
Richard Le Mesurier 2016年


14

多くの答えがありますが、このための行だけが必要です:

android:textColorHint = "#000000"

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

10

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は不要です。


10

あなたは使用することができます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

これによると: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で動作します


6

マテリアルコンポーネントライブラリをカスタマイズできTextInputLayout使用してヒントテキストの色を:

  • レイアウトでは:

    • app:hintTextColor 属性:折りたたまれ、テキストフィールドがアクティブなときのラベルの色
    • android:textColorHint 属性:他のすべてのテキストフィールドの状態(休憩や無効など)でのラベルの色

何かのようなもの:

<com.google.android.material.textfield.TextInputLayout
     app:hintTextColor="@color/mycolor"
     android:textColorHint="@color/text_input_hint_selector"
     .../>

ここに画像の説明を入力してくださいここに画像の説明を入力してください


5

親ビューにサードパーティライブラリのスタイルがあり、EditTextが白くなっていたようです。

android:theme="@style/com_mixpanel_android_SurveyActivityTheme"

これを削除すると、すべて正常に動作しました。


5

これを試してみてくださいこのヘルプ

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

        }
    });

なぜそれをonTextChangedリスナーに入れたのですか?
user25

5

遅いが、それは私がこのようにした誰かを助けるかもしれない

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

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

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

ドキュメントから:

ヒントは、EditTextではなく、TextInputLayoutに設定する必要があります。ヒントがXMLの子EditTextで指定されている場合でも、TextInputLayoutは正しく機能する可能性があります。TextInputLayoutはEditTextのヒントをフローティングラベルとして使用します。ただし、今後ヒントを変更する呼び出しを行っても、TextInputLayoutのヒントは更新されません。意図しない動作を回避するには、EditTextではなくTextInputLayoutでsetHint(CharSequence)およびgetHint()を呼び出します。

on ではなく、onに設定android:hintapp:hintTextColorてみてください。TextInputLayoutTextInputEditText



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

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

ハイライトの色は白です:

 <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

これは、この同様の問題と必要な解決策に関する私の経験です。

要件:

  • カスタマイズを作成する必要がありますTextInputEditText(いくつかは透明でなければならず、いくつかはそうではないが、さまざまなイベントにカスタム色を使用する必要があります)

直面している問題:

  • android:textColorHint 必要に応じて機能していません。

解決策は試みましたが失敗しました:

  • android:textColorHintスタイルで使用され、に適用されTextInputEditTextます。結果や違いはありません。
  • android:textColorHint適用されたアプリケーションのテーマに設定します。助けにはなりましたが、現在はアプリケーション全体に設定されています。(要件にマークアップする必要はありません)

多くのRnDの後、見つかった最良のソリューションは、親ビューにスタイルを適用するだけではなく、親ビューにテーマを適用する必要があることを説明した記事です。TextInputLayoutTextInputEditText

TextInputLayoutの適切なThemingを確認してください。


0

テーマ属性をTextInputLayoutに設定しようとしたときに、テーマが子ビューのedittextにも適用されていましたが、これは望んでいませんでした。

したがって、私にとってうまくいった解決策は、TextInputLayoutの「app:hintTextAppearance」プロパティにカスタムスタイルを追加することでした。

styles.xmlに次のスタイルを追加します。

<style name="TextInputLayoutTextAppearance" parent="TextAppearance.AppCompat">
    <item name="android:textColor">@color/text_color</item>
    <item name="android:textSize">@dimen/text_size_12</item>
</style>

そして、このスタイルを以下のようにTextInputLayoutの「app:hintTextAppearance」プロパティに適用します。

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/mobile_num_til"
        android:layout_width="0dp"
        android:layout_height="@dimen/dim_56"
        app:layout_constraintStart_toStartOf="@id/title_tv"
        app:layout_constraintEnd_toEndOf="@id/title_tv"
        app:layout_constraintTop_toBottomOf="@id/sub_title_tv"
        android:layout_marginTop="@dimen/dim_30"
        android:padding="@dimen/dim_8"
        app:hintTextAppearance="@style/TextInputLayoutTextAppearance"
        android:background="@drawable/rect_round_corner_grey_outline">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/mobile_num_et"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="@string/mobile_number"
            android:gravity="center_vertical"
            android:background="@android:color/transparent"/>

    </com.google.android.material.textfield.TextInputLayout>

0

新しいandroidxマテリアルデザインライブラリcom.google.android.material を使用している場合は、colorstatelistを使用して、次のように、フォーカスされた、ホバーされた、デフォルトの状態でヒントテキストの色を制御できます。(これに触発され

ではres/color/text_input_box_stroke.xml、次のようなものプット:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#fcc" android:state_focused="true"/>
    <item android:color="#cfc" android:state_hovered="true"/>
    <item android:color="#ccf"/>
</selector>

次に、あなたにstyles.xml入れます:

<style name="MtTILStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="boxStrokeColor">@color/text_input_box_stroke</item>
    <item name="hintTextColor">@color/text_input_box_stroke</item>
</style>

最後に、実際のスタイルを示しますTextInputLayout 。何らかの理由android:textColorHintで、ヒントのデフォルトのテキストの色を設定する必要もあります。

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/my_layout_id"
    style="@style/LoginTextInputLayoutStyle"
    android:textColorHint="#ccf"
    ...

0

マテリアルデザインライブラリを使用している場合。現在、私はバージョンを使用しています

実装 'com.google.android.material:material:1.3.0-alpha01'

1-TextInputLayoutが静止しているときに色を設定します。

<item name="android:textColorHint">@color/your_color_hint</item>

2-TextInputLayoutがフローティング/フォーカス/タップされているときに色を設定します。

<item name="hintTextColor">@color/your_color_floating_hint</item>

3-TextInputLayoutの下の線の色を設定します。

<item name="boxStrokeColor">@color/TextViewColor_line</item>

4-TextInputLayoutでエラーの色を設定します。

<item name="boxStrokeErrorColor">@color/colorPrimary</item>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.