setHintTextColor () ใน EditText


88

ฉันมีมุมมองที่มีกล่องข้อความสองกล่องและผู้ใช้สามารถเลือกสีข้อความจากมุมมองอื่นบนหน้าจอเดียวกัน (ผ่านกล่องโต้ตอบ)

ดังนั้นเมื่อผู้ใช้เปลี่ยนสีผ่านกล่องโต้ตอบฉันกำลังเปลี่ยนสีของEditTextข้อความและคำใบ้ แต่เมื่อมีข้อความบางส่วนพร้อมใช้งานEditTextหลังจากนั้นผู้ใช้เลือกสีอื่นข้อความนั้นจะเป็นสีนั้น แต่ถ้าฉันลบข้อความนั้นทั้งหมดแล้วสีของHintTextจะเป็นสีก่อนหน้า

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


คำตอบ:


58

ใช้สิ่งนี้เพื่อเปลี่ยนสีคำใบ้ -

editText.setHintTextColor(getResources().getColor(R.color.white));

ทางออกสำหรับปัญหาของคุณ -

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,int arg3){
        //do something
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        //do something
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        if(arg0.toString().length() <= 0) //check if length is equal to zero
            tv.setHintTextColor(getResources().getColor(R.color.white));
    }
});

7
ทำไมวิธีการแก้ปัญหาที่ซับซ้อนเช่นนี้ซึ่งสามารถทำได้ในครึ่งบรรทัด
zeeshan

8
เพราะการแก้ปัญหานั้นไม่ใช่การแก้ปัญหาของเขา?
evaristokbza

320

เพียงเพิ่มสิ่งนี้ในของคุณlayoutสำหรับEditText:

Android: textColorHint = "# FFFFFF"


9
สิ่งนี้ควรจะแก้ปัญหาของ OP อย่างไร? คำถามคือเกี่ยวกับวิธีการเปลี่ยนสีคำใบ้แบบไดนามิกเมื่อ EditText มีข้อความบางส่วนและฉันไม่เห็นว่าจะแก้อย่างไร ...
evaristokbza

6
โปรดอ่านคำถามอย่างละเอียด ผู้เขียนไม่ได้ถามในลักษณะที่เหมาะสม
อานันท์ช

23

สีเริ่มต้น:

android:textColorHint="@android:color/holo_blue_dark"

สำหรับรหัสสี:

android:textColorHint="#33b5e5"

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

15

ไฟล์ Xml Layout ภายในเราสามารถเปลี่ยนสีของคำใบ้ .....

android:textColorHint="@android:color/*****"

คุณสามารถแทนที่*ด้วยสีหรือรหัสสี


7

ดูเหมือนว่าEditText จะใช้ hintTextColor เฉพาะในกรณีที่ข้อความว่างเปล่า วิธีง่ายๆก็จะเป็นแบบนี้

Editable text = mEditText.getText();
mEditText.setText(null);
mEditText.setHintTextColor(color);
mEditText.setText(text);

หากคุณมีหลายเขตข้อมูลคุณสามารถขยาย EditText และเขียนวิธีการที่เรียกใช้ตรรกะนี้และใช้วิธีการนั้นแทน


6

โดยทางโปรแกรมใน Java - อย่างน้อย API v14 +

exampleEditText.setHintTextColor(getResources().getColor(R.color.your_color));


1
บนของซัมซุง S5 apiV19 ปัญหาเดียวกันเป็น @dishan กล่าวถึง: ไม่ทำงานในกรณีที่มีข้อความบางส่วนถึงแม้ว่ามันจะเป็นsetHintTextColor(color) ""
Dmitry Gryazin


0

คุณสามารถโทรได้editText.invalidate()หลังจากรีเซ็ตสีคำใบ้ ซึ่งสามารถแก้ปัญหาของคุณได้ จริงๆแล้ว SDK จะอัปเดตสีในลักษณะเดียวกัน

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