Как программно установить drawableRight на Android Edittext?


86

Я знаю о set drawableRight в XML. но мне нужно было сделать это программно, потому что это изменение в соответствии с некоторым условием.


9
Используйте setCompoundDrawablesWithIntrinsicBounds () для EditText.
Пиюш

Ответы:


261

Вы можете использовать функцию ниже:

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

или (если вы хотите передать сам объект рисования вместо его идентификатора)

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

Порядок параметров, соответствующих доступному местоположению: слева, сверху, справа, снизу


1
как я могу назначить идентификатор этому рисунку? в основном я хочу добавить сенсорный слушатель к этому конкретному рисунку
Торвальд Олавсен

@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 (если есть) так, чтобы они отображались слева от текста, над ним, справа от него и под ним. Используйте 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
Вы должны объяснить свой код, чтобы помочь ОП, почему он отвечает на его вопрос.
Маркус

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);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.