Làm cách nào để đặt drawableRight theo chương trình trên Android Edittext?


86

Tôi biết về set drawableRight trong XML. nhưng tôi bắt buộc phải làm điều đó theo chương trình vì nó thay đổi theo một số điều kiện.


9
Sử dụng setCompoundDrawablesWithIntriualityBounds () cho EditText.
Piyush

Câu trả lời:


258

Bạn có thể sử dụng chức năng dưới đây:

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

hoặc (nếu bạn muốn chuyển chính nó có thể vẽ thay vì ID của nó)

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

Thứ tự của các tham số tương ứng với vị trí có thể vẽ là: trái, trên, phải, dưới


1
làm cách nào để chỉ định một ID cho có thể vẽ được? về cơ bản tôi muốn thêm một người biết lắng nghe cảm ứng để mà cụ thể drawable
Thorvald Olavsen

@Lawrence Choy chào bạn, cách kiểm tra Hình ảnh đã thoát hay chưa. Vui lòng giúp mình trong trường hợp này, Và cách thay đổi màu ảnh.
Gowthaman M

8

Tìm thêm ở đây

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

Bạn cũng có thể đặt phần đệm có thể kéo theo lập trình:

myEdit.setCompoundDrawablePadding("Padding value");

hi sir, làm thế nào để kiểm tra hình ảnh đã là xuất cảnh, not.Please giúp tôi trong trường hợp này, Và làm thế nào để thay đổi màu sắc hình ảnh
Gowthaman M

4

Hãy thử như bên dưới:

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

Biên tập :

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

4

Thử:

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

Sau đó, bạn có thể thêm trình nghe cảm ứng vào có thể vẽ cụ thể đó.


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

Giải thích ở đây

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

Đặt các Bản vẽ (nếu có) xuất hiện ở bên trái, bên trên, bên phải và bên dưới văn bản. Sử dụng 0 nếu bạn không muốn Drawable ở đó. Các giới hạn của Drawables sẽ được đặt thành giới hạn nội tại của chúng.


2

Để thay đổi bên trái và bên phải cùng một lúc, tôi sử dụng dòng đơn này.

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

1

Bạn có thể sử dụng chế độ xem editText của mình (ở đây là txview) được tích hợp trong hàm setCompoundDrawablesWithIntriualityBounds () để thực hiện những gì bạn đang tìm kiếm

trong mã của tôi Tôi đã sử dụng nó như thế này. txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);

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

1
Bạn nên giải thích mã của mình để giúp OP tại sao nó trả lời câu hỏi của anh ta.
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);

            }
        });

Ẩn có thể vẽ bằng cách sử dụng này

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

0

Nếu nó yêu cầu đồ họa android có thể vẽ thì điều này sẽ hoạt động

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.