XML의 drawableRight 설정에 대해 알고 있습니다. 그러나 어떤 조건에 따라 변경되기 때문에 프로그래밍 방식으로 수행해야했습니다.
답변
아래 기능을 사용할 수 있습니다.
editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.drawableRight, 0);
또는 (ID 대신 드로어 블 자체를 전달하려는 경우)
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context,R.drawable.drawableRight), null)
드로어 블 위치에 해당하는 매개 변수의 순서는 왼쪽, 위쪽, 오른쪽, 아래쪽입니다.
답변
여기에서 더 찾기
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");
답변
다음과 같이 시도하십시오.
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);
답변
시험:
EditText editFirstname = (EditText) findViewById(R.id.edit_fname);
Drawable icUser = getResources().getDrawable(R.drawable.ic_user);
editFirstname.setCompoundDrawablesWithIntrinsicBounds(null, null, icUser, null);
그런 다음 특정 드로어 블에 터치 리스너를 추가 할 수 있습니다.
답변
int img = R.drawable.smiley;
editText.setCompoundDrawables( null, null, img, null );
여기에 설명
setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)
Drawables (있는 경우)를 텍스트의 왼쪽, 위, 오른쪽 및 아래에 표시하도록 설정합니다. Drawable을 원하지 않으면 0을 사용하십시오. Drawables의 경계는 고유 경계로 설정됩니다.
답변
한 번에 왼쪽과 오른쪽을 모두 변경하려면이 한 줄을 사용합니다.
download.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_lock_open_white_24dp, 0, R.drawable.ic_lock_open_white_24dp, 0);
답변
setCompoundDrawablesWithIntrinsicBounds () 함수에 내장 된 editText 뷰 (여기서는 txview)를 사용하여 원하는 작업을 수행 할 수 있습니다.
내 코드에서 나는 이것을 이렇게 사용했습니다. txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);
txview.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom);