Android Edittext에서 프로그래밍 방식으로 drawableRight를 설정하는 방법은 무엇입니까?


85

XML의 drawableRight 설정에 대해 알고 있습니다. 그러나 어떤 조건에 따라 변경되기 때문에 프로그래밍 방식으로 수행해야했습니다.


9
EditText에 setCompoundDrawablesWithIntrinsicBounds () 를 사용하십시오 .
Piyush 2014 년

답변:


258

아래 기능을 사용할 수 있습니다.

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

또는 (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)

프로그래밍 방식으로 드로어 블 패딩을 설정할 수도 있습니다.

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 (있는 경우)를 텍스트의 왼쪽, 위, 오른쪽 및 아래에 표시하도록 설정합니다. Drawable을 원하지 않으면 0을 사용하십시오. Drawables의 경계는 고유 경계로 설정됩니다.


2

한 번에 왼쪽과 오른쪽을 모두 변경하려면이 한 줄을 사용합니다.

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

1

setCompoundDrawablesWithIntrinsicBounds () 함수에 내장 된 editText 뷰 (여기서는 txview)를 사용하여 원하는 작업을 수행 할 수 있습니다.

내 코드에서 나는 이것을 이렇게 사용했습니다. 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

안드로이드 그래픽 드로어 블이 필요한 경우 작동합니다.

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.