Как программно установить 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");
Rethinavel
источник
привет, сэр, как проверить, что изображение уже вышло или нет. Пожалуйста, помогите мне в этом случае, и как изменить цвет изображения
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);

Затем вы можете добавить сенсорный прослушиватель к этому конкретному объекту.

Misbahm3
источник
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);
abir-cse
источник
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);
Прибыль
источник