Jak programowo ustawić drawableRight na Android Edittext?

86

Wiem o ustawieniu drawableRight w XML. ale musiałem to zrobić programowo, ponieważ jest to zmiana zgodnie z jakimś warunkiem.

Sanket Kachhela
źródło
9
Użyj setCompoundDrawablesWithIntrinsicBounds () dla EditText.
Piyush,

Odpowiedzi:

258

Możesz skorzystać z poniższej funkcji:

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

lub (jeśli chcesz przekazać sam drawable zamiast jego identyfikatora)

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

Kolejność parametrów odpowiadająca lokalizacji do rysowania jest następująca: lewy, górny, prawy, dolny

Lawrence Choy
źródło
1
jak mogę przypisać identyfikator do tego rysunku? w zasadzie chcę dodać słuchacza dotykowego do tego konkretnego rysowania
Thorvald Olavsen,
@Lawrence Choy cześć panie, jak sprawdzić, czy obraz jest już zakończony, czy nie.Prosimy o pomoc w tym przypadku, a jak zmienić kolor obrazu.
Gowthaman M
8

Znajdź więcej tutaj

EditText myEdit = (EditText) findViewById(R.id.myEdit);
myEdit.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.icon, 0);  
// where params are (left,top,right,bottom)

Możesz również programowo ustawić dopełnienie do rysowania:

myEdit.setCompoundDrawablePadding("Padding value");
Rethinavel
źródło
cześć proszę pana, jak sprawdzić, czy obraz jest już zakończony, czy nie, proszę o pomoc w tym przypadku, a jak zmienić kolor obrazu
Gowthaman M
4

Spróbuj jak poniżej:

Drawable img = getContext().getResources().getDrawable( R.drawable.smiley );
EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);

Edytować :

 int img = R.drawable.smiley;
 EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);
Sagar Maiyad
źródło
4

Próbować:

EditText editFirstname = (EditText) findViewById(R.id.edit_fname);
Drawable icUser = getResources().getDrawable(R.drawable.ic_user);
editFirstname.setCompoundDrawablesWithIntrinsicBounds(null, null, icUser, null);

Następnie możesz dodać słuchacza dotyku do tego konkretnego rysunku.

misbahm3
źródło
2
int img = R.drawable.smiley;
editText.setCompoundDrawables( null, null, img, null );

Wyjaśniono tutaj

setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)

Ustawia Drawables (jeśli istnieją) tak, aby pojawiały się po lewej stronie, powyżej, po prawej stronie i poniżej tekstu. Użyj 0, jeśli nie chcesz tam Drawable. Granice Drawables zostaną ustawione na ich wewnętrzne ograniczenia.

Renjith Krishnan
źródło
2

Do zmiany lewej i prawej strony jednocześnie używam tej pojedynczej linii.

download.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_lock_open_white_24dp, 0, R.drawable.ic_lock_open_white_24dp, 0);
abir-cse
źródło
1

Możesz użyć swojego widoku editText (tutaj jest to txview) wbudowanej funkcji setCompoundDrawablesWithIntrinsicBounds (), aby zrobić to, czego szukasz

w moim kodzie użyłem tego w ten sposób. txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);

txview.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom);
Paul Mathew
źródło
1
Powinieneś wyjaśnić swój kod, aby pomóc OP, dlaczego odpowiada na jego pytanie.
Markus,
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);

            }
        });

Ukryj do rysowania za pomocą tego

et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,0, 0, 0);
Keshav Gera
źródło
0

Jeśli wymaga grafiki dla Androida, to zadziała

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
Margines
źródło