Android Edittext'de drawableRight'ı programlı olarak nasıl ayarlayabilirim?


86

XML'de drawableRight setini biliyorum. ancak bunu programlı olarak yapmak zorundaydım çünkü bazı koşullara göre değişiklik gösteriyor.


9
EditText için setCompoundDrawablesWithIntrinsicBounds () kullanın .
Piyush

Yanıtlar:


261

Aşağıdaki işlevi kullanabilirsiniz:

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

veya (çekilebilir dosyanın kimliği yerine kendisini geçirmek istiyorsanız)

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

Çekilebilir konuma karşılık gelen parametrelerin sırası: sol, üst, sağ, alt


1
bu çekmeceye nasıl kimlik atayabilirim? temelde o belirli
çekmeceye

@Lawrence Choy merhaba efendim, nasıl kontrol edilir Görüntü zaten çıkmış mı değil mi? Lütfen bu durumda bana yardım edin, Ve görüntü rengini nasıl değiştirebilirim.
Gowthaman M

8

Burada daha fazlasını bulun

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

Çekilebilir dolguyu programlı olarak da ayarlayabilirsiniz:

myEdit.setCompoundDrawablePadding("Padding value");

merhaba efendim, nasıl kontrol edilir Görüntü zaten çıktı ya da değil Lütfen bu durumda bana yardım edin, Ve görüntü rengi nasıl değiştirilir
Gowthaman M

4

Aşağıdaki gibi deneyin:

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

Düzenle :

 int img = R.drawable.smiley;
 EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);

4

Deneyin:

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

Daha sonra, bu belirli çekmeceye bir dokunma dinleyicisi ekleyebilirsiniz.


2
int img = R.drawable.smiley;
editText.setCompoundDrawables( null, null, img, null );

Burada açıklandı

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

Çekilebilirleri (varsa) metnin solunda, üstünde, sağında ve altında görünecek şekilde ayarlar. Orada bir Çizilebilir istemiyorsanız 0 kullanın. Çekilebilirlerin sınırları kendi iç sınırlarına ayarlanacaktır.


2

Bir seferde hem sola hem de sağa değiştirmek için bu tek satırı kullanıyorum.

download.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_lock_open_white_24dp, 0, R.drawable.ic_lock_open_white_24dp, 0);

1

Aradığınız şeyi yapmak için setCompoundDrawablesWithIntrinsicBounds () işlevinde yerleşik editText görünümünüzü (burada txview) kullanabilirsiniz.

benim kodumda böyle kullandım. txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);

txview.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom);

1
OP'ye sorusunu neden cevapladığına yardımcı olmak için kodunuzu açıklamalısınız.
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);

            }
        });

Bunu kullanarak Çekilebilir'i gizle

et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,0, 0, 0);

0

Çekilebilir android grafik gerektiriyorsa, bu işe yarayacaktır

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.