วิธีการตั้งโปรแกรม drawableRight บน Android Edittext


86

ฉันรู้เกี่ยวกับ set drawableRight ใน XML แต่ฉันต้องทำแบบเป็นโปรแกรมเพราะมีการเปลี่ยนแปลงตามเงื่อนไขบางประการ


9
ใช้setCompoundDrawablesWithIntrinsicBounds ()สำหรับ EditText
Piyush

คำตอบ:


261

คุณสามารถใช้ฟังก์ชันด้านล่าง:

editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.drawableRight, 0);

หรือ (หากคุณต้องการส่งผ่าน drawable ตัวเองแทน ID)

editText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context,R.drawable.drawableRight), null)

ลำดับของพารามิเตอร์ที่สอดคล้องกับตำแหน่งที่ดึงได้คือซ้ายบนขวาล่าง


1
ฉันจะกำหนด ID ให้กับสิ่งที่วาดได้อย่างไร? โดยพื้นฐานแล้วฉันต้องการเพิ่มผู้ฟังแบบสัมผัสให้กับสิ่งที่วาดได้โดยเฉพาะ
Thorvald Olavsen

@Lawrence Choy สวัสดีครับวิธีตรวจสอบภาพออกแล้วหรือยังกรุณาช่วยผมในกรณีนี้และวิธีเปลี่ยนสีภาพ
Gowthaman M

8

ค้นหาเพิ่มเติมได้ที่นี่

EditText myEdit = (EditText) findViewById(R.id.myEdit);
myEdit.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.icon, 0);  
// where params are (left,top,right,bottom)

คุณยังสามารถตั้งค่า padding แบบวาดได้โดยใช้โปรแกรม:

myEdit.setCompoundDrawablePadding("Padding value");

สวัสดีครับวิธีตรวจสอบภาพออกแล้วหรือไม่โปรดช่วยฉันในกรณีนี้และวิธีการเปลี่ยนสีภาพ
Gowthaman M

4

ลองชอบด้านล่าง:

Drawable img = getContext().getResources().getDrawable( R.drawable.smiley );
EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);

แก้ไข:

 int img = R.drawable.smiley;
 EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);

4

ลอง:

EditText editFirstname = (EditText) findViewById(R.id.edit_fname);
Drawable icUser = getResources().getDrawable(R.drawable.ic_user);
editFirstname.setCompoundDrawablesWithIntrinsicBounds(null, null, icUser, null);

จากนั้นคุณสามารถเพิ่มฟังก์ชั่นสัมผัสลงในสิ่งที่วาดได้


2
int img = R.drawable.smiley;
editText.setCompoundDrawables( null, null, img, null );

อธิบายที่นี่

setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)

ตั้งค่า Drawables (ถ้ามี) ให้ปรากฏทางด้านซ้ายของด้านบนทางด้านขวาของและด้านล่างข้อความ ใช้ 0 หากคุณไม่ต้องการ Drawable ที่นั่น ขอบเขตของ Drawables จะถูกกำหนดเป็นขอบเขตที่แท้จริง


2

สำหรับการเปลี่ยนซ้ายและขวาทั้งสองครั้งฉันใช้บรรทัดเดียวนี้

download.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_lock_open_white_24dp, 0, R.drawable.ic_lock_open_white_24dp, 0);

1

คุณสามารถใช้มุมมอง editText ของคุณ (ในที่นี้คือ txview) ในตัวฟังก์ชัน setCompoundDrawablesWithIntrinsicBounds () เพื่อทำสิ่งที่คุณกำลังมองหา

ในรหัสของฉันฉันใช้แบบนี้ txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);

txview.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom);

1
คุณควรอธิบายรหัสของคุณเพื่อช่วย OP ว่าทำไมจึงตอบคำถามของเขา
Markus

0
        et_feedback.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {

                }
              et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,R.mipmap.feedback_new, 0, 0);                
               et_feedback.setTextColor(Color.BLACK);

            }
        });

ซ่อน Drawable โดยใช้สิ่งนี้

et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,0, 0, 0);

0

หากต้องใช้กราฟิก Android ที่วาดได้สิ่งนี้จะใช้งานได้

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.