Wie kann ich drawableRight programmgesteuert auf Android Edittext einstellen?


83

Ich weiß, wie man drawableRight in XML setzt. aber ich musste es programmgesteuert tun, weil es sich unter bestimmten Bedingungen ändert.


8
Verwenden Sie setCompoundDrawablesWithIntrinsicBounds () für EditText.
Piyush

Antworten:


253

Sie können die folgende Funktion verwenden:

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

oder (wenn Sie das Drawable selbst anstelle seiner ID übergeben möchten)

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

Die Reihenfolge der Parameter, die der zeichnbaren Position entsprechen, lautet: links, oben, rechts, unten


1
Wie kann ich diesem Zeichnungsobjekt eine ID zuweisen? Grundsätzlich möchte ich diesem speziellen Drawable einen Touch-Listener hinzufügen
Thorvald Olavsen,

@ Lawrence Choy Hallo Herr, wie man prüft, ob das Bild bereits beendet ist oder nicht. Bitte helfen Sie mir in diesem Fall und wie man die Bildfarbe ändert.
Gowthaman M

8

Weitere Informationen finden Sie hier

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

Sie können die Zeichenpolsterung auch programmgesteuert einstellen:

myEdit.setCompoundDrawablePadding("Padding value");

Hallo Herr, wie man prüft, ob das Bild bereits beendet ist oder nicht. Bitte helfen Sie mir in diesem Fall und wie man die
Bildfarbe

4

Versuchen Sie es wie folgt:

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

Bearbeiten:

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

4

Versuchen:

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

Anschließend können Sie diesem bestimmten Zeichenelement einen Touch-Listener hinzufügen.


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

erklärt hier

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

Legt fest, dass die Drawables (falls vorhanden) links, über, rechts und unter dem Text angezeigt werden. Verwenden Sie 0, wenn Sie dort kein Drawable möchten. Die Grenzen der Drawables werden auf ihre inneren Grenzen gesetzt.


1

Sie können Ihre in der Funktion setCompoundDrawablesWithIntrinsicBounds () integrierte editText-Ansicht (hier txview) verwenden, um das zu tun, wonach Sie suchen

In meinem Code habe ich es so benutzt. txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);

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

1
Sie sollten Ihren Code erklären, um dem OP zu helfen, warum er seine Frage beantwortet.
Markus

1

Zum gleichzeitigen Ändern von links und rechts verwende ich diese einzelne Zeile.

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

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);

            }
        });

Mit dieser Option Drawable ausblenden

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

0

Wenn Android-Grafiken gezeichnet werden müssen, funktioniert dies

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.