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


85

Я знаю про встановлення drawableRight у XML. але я вимагав робити це програмно, оскільки це змінюється відповідно до якоїсь умови.


9
Використовуйте setCompoundDrawablesWithIntrinsicBounds () для EditText.
Піюш

Відповіді:


258

Ви можете використовувати функцію нижче:

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)

Встановлює малюнки (якщо такі є), щоб вони з’являлись ліворуч, зверху, праворуч та нижче тексту. Використовуйте 0, якщо ви не хочете, щоб там можна було малювати. Межі, що витягуються, будуть встановлені для їх власних меж.


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.