web-dev-qa-db-fra.com

Comment définir par programme drawableRight sur Android Edittext?

Je sais à propos de set drawableRight in XML. mais je devais le faire par programme parce que c'est changer selon certaines conditions.

60
Sanket Kachhela

Vous pouvez utiliser la fonction ci-dessous:

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

L'ordre des paramètres correspondant à l'emplacement dessinable est: gauche, haut, droite, bas

187
Lawrence Choy

Trouver plus loin ici

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

Vous pouvez également définir un rembourrage pouvant être dessiné par programme:

myEdit.setCompoundDrawablePadding("Padding value");
6
Rethinavel Pillai

Essayez comme ci-dessous:

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

Modifier :

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

Essayer:

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

Ensuite, vous pouvez ajouter un écouteur tactile à cet dessin spécifique.

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

Expliqué ici

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

Définit les Drawables (le cas échéant) pour qu’ils apparaissent à gauche, en haut, à droite et en dessous du texte. Utilisez 0 si vous ne voulez pas de Drawable ici. Les limites des Drawables seront définies sur leurs limites intrinsèques.

2
Renjith Krishnan

Vous pouvez utiliser votre vue editText (ici txview) intégrée à la fonction setCompoundDrawablesWithIntrinsicBounds () pour faire ce que vous recherchez. 

dans mon code, je l’utilisais comme ceci .. txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);

txview.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom);
1
Paul Mathew

Pour changer à gauche et à droite, j'utilise cette seule ligne. 

download.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_lock_open_white_24dp, 0, R.drawable.ic_lock_open_white_24dp, 0);
0
abir99
        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);

            }
        });

Hide Drawable using this  

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

Si cela nécessite des graphismes Android, cela fonctionnera

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
0
MarGin