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

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);