เปลี่ยนสีคำใบ้ EditText เมื่อใช้ TextInputLayout


146

ฉันกำลังใช้สิ่งใหม่ 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>

ฉันกำลังเผชิญกับข้อผิดพลาดเดียวกัน คำแนะนำอยู่เสมอสี "สีขาว" ครั้งแรกหลังจากแตะแก้ไขข้อความใด ๆ ก็จะใช้สีที่กำหนดโดยคุณ ยังคงค้นหาการแก้ไข
ch3tanz

คุณได้ลองคำตอบของ @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 คุณตั้งค่าชุดรูปแบบเป็นชุดรูปแบบของ acitvity ที่คุณใช้แก้ไขข้อความหรือไม่
mbelsky

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 = " hint text "android: textColorHint =" # 919389 "/>
masoud Cheragee

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

@Coder คุณลักษณะบางอย่างที่เขาเพิ่มมีไว้สำหรับ 21+
Mr.O


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มันจะไม่ปรากฏขึ้น คุณต้องวางไว้ในธีมหลักของแอปพลิเคชัน


3
เป็นเรื่องน่าผิดหวังอย่างยิ่งที่ไม่สามารถมีสไตล์การป้อนข้อมูลหลายแบบในแอปโดยใช้วิดเจ็ตนี้ แต่เท่าที่ฉันสามารถบอกได้ว่าคุณพูดถูก : /
Turnsole

4
ไม่จำเป็นต้องมีในแอปพลิเคชันทั้งหมด คุณสามารถใช้ชุดรูปแบบนี้กับกิจกรรมเดียวเท่านั้นในไฟล์รายการของคุณ และสร้างธีมอื่นสำหรับกิจกรรมที่เหลือของคุณ
RexSplode

23

ฉันไม่แน่ใจว่าสิ่งที่ทำให้เกิดปัญหาของคุณคืออะไรใส่รหัสนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน ฉันคิดว่ามันเกี่ยวข้องกับการใช้ xml namespace ( xmlns) ที่ถูกต้อง ฉันไม่แน่ใจว่าสนับสนุน android.support.design โดยไม่ใช้แอตทริบิวต์ xml namespace หรือไม่ หรือมีส่วนเกี่ยวข้องกับการ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

Mine เป็นกรณีพิเศษเนื่องจากมุมมองพาเรนต์มีชุดรูปแบบที่ทำให้เกิดปัญหา แต่โค้ดที่ฉันวางไว้ใช้งานได้ดีในตอนนี้หลังจากที่ฉันลบธีมหนึ่งออก
SamIAmHarris

1
สิ่งนี้ใช้ได้กับคำใบ้ลอย แต่ไม่ใช่คำใบ้ภายในตัวควบคุม EditText ที่ว่างเปล่า เพื่อให้อัปเดตธีมของแอปพลิเคชั่นตามคำตอบของ @ mbelsky
Richard Le Mesurier

อย่างไรก็ตามแอพเริ่มต้น: hintTextAppearance เป็นรูปแบบ@style/TextAppearance.Design.Hintดังนั้นคุณอาจต้องการใช้สิ่งนั้น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


14

คำตอบมากมาย แต่ต้องการเพียงบรรทัดเดียวสำหรับสิ่งนี้:

หุ่นยนต์: 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>

ถ้าคุณเพียงต้องการเปลี่ยนสีของฉลากในสถานะเท็จแล้ว 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

ด้วยไลบรารี Material Componentsคุณสามารถปรับแต่ง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();;

        }
    });

ทำไมคุณถึงใส่ไว้ในฟัง TextTypeChanged?
25

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 ของคุณเป็นสีที่คุณต้องการภายใน Theme ของคุณซึ่งจะเปลี่ยนบรรทัด 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>

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 เพื่อตั้งค่าสีที่คุณต้องการเป็นสี Hint สำหรับ EditText สิ่งนี้คือคำแนะนำใน EditText จะไม่หายไปเมื่อคุณพิมพ์บางสิ่ง แต่ทันทีที่ EditText ได้รับการโฟกัส (พร้อมภาพเคลื่อนไหวที่ดี) คุณจะสังเกตเห็นสิ่งนี้ได้อย่างชัดเจนเมื่อคุณเปลี่ยนโฟกัสไปที่ EditText


3

จากเอกสาร:

ควรตั้งคำใบ้ไว้ที่ TextInputLayout แทนที่จะเป็น EditText หากมีการระบุคำใบ้ไว้บน EditText เด็กใน XML TextInputLayout อาจยังทำงานได้อย่างถูกต้อง TextInputLayout จะใช้คำใบ้ของ EditText เป็นป้ายกำกับลอย อย่างไรก็ตามการโทรในอนาคตเพื่อแก้ไขคำใบ้จะไม่อัปเดตคำแนะนำของ TextInputLayout เพื่อหลีกเลี่ยงพฤติกรรมที่ไม่ตั้งใจให้เรียก setHint (CharSequence) และ getHint () บน TextInputLayout แทนที่จะเป็น EditText

ลองตั้งค่าandroid:hintและapp: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 จำนวนมากพบวิธีแก้ไขปัญหาที่ดีที่สุดในบทความซึ่งอธิบายว่าเราจำเป็นต้องใช้ชุดรูปแบบกับTextInputLayoutหรือเป็นมุมมองหลักแทนที่จะใช้สไตล์กับTextInputEditTextหรือเป็นมุมมองหลักเท่านั้น

โปรดตรวจสอบTextInputLayout ชุดรูปแบบที่เหมาะสมซึ่งบอกว่าเราอยู่ในเส้นทางที่ผิด


0

เมื่อฉันพยายามตั้งค่าคุณลักษณะของชุดรูปแบบเป็น TextInputLayout ชุดรูปแบบก็ถูกนำไปใช้กับ edittext view child ซึ่งฉันไม่ต้องการ

ดังนั้นวิธีแก้ปัญหาสำหรับฉันคือการเพิ่มสไตล์ที่กำหนดเองในคุณสมบัติ "แอพ: hintTextAppearance" ของ TextInputLayout

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

และใช้สไตล์นี้กับคุณสมบัติ "แอพ: hintTextAppearance" ของ TextInputLayout ดังนี้:

<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: วัสดุ: 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>

0

ฉันแค่ต้องการเปลี่ยนสีของฉลากเมื่อมันถูกยกขึ้นไปด้านบน แต่การตั้งค่าtextColorHintจะเปลี่ยนสีในทุกสถานะ ดังนั้นสิ่งนี้ได้ผลกับฉัน:

   <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
       ...
        <item name="colorControlActivated">@color/colorPrimary</item>
       ...
    </style>

สิ่งนี้จะเปลี่ยนสีเมื่ออินพุทถูกโฟกัส

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.