2010-09-13 12 views

Antwort

61

Wenn etwas wie folgt aus:

EditCheck

ist das, was du redest, dann brauchen Sie nur entweder die Drawable{Right | Left | Top | Bottom} Eigenschaft im xml gesetzt, oder die entsprechende Java-Befehl aufrufen.

EditText text = (EditText)findViewById(R.id.text); 
text.setCompoundDrawables(null, null, getResources().getDrawable(R.drawable.check_box), null); 
+0

java java Komma nd sollte setBounds (Rect) aufrufen, oder es kann nicht angezeigt werden image – pengwang

+0

http://mgmblog.com/2010/06/04/setcompounddrawable-to-add-drawables-to-textview/ –

+0

Sie haben die Bilder in drawable zeigen verwendet, Aber ich muss die Bilder zeigen, Galerie Bilder zu werfen, wenn es möglich ist, die Bilder aus der Galerie in Bearbeitung Textansicht auswählen. – Manoj

7

Sie können ein Bild zu Ihrem EditText durch android:background="@drawable/img" hinzuzufügen.

Wenn Sie den Stil ändern möchten, indem Sie neun Patch oder sonst verwenden, aber wenn Sie ein kleines Bild auf der linken Seite Ihrer EditText hinzufügen möchten, verwenden Sie android:drawableRight="@drawable/icon".

+0

@Thanks sami, ich möchte Bild im Text dynamisch bearbeiten, – sivaraj

24

Sie können auch versuchen, diese

SpannableString ss = new SpannableString("abc\n"); 
    Drawable d = img.getDrawable(); 
    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
    ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); 
    ss.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 
    editT.setText(ss); 
+1

+1 Dieser Code ist hilfreich, wenn Sie dem Text dynamisch mehr als einen Zeichensatz hinzufügen möchten. zum Beispiel Chaten Eingabe Edittext. Der Benutzer kann Smiley-Symbole auswählen. Sie müssen diese überspannbare Zeichenfolge an die bearbeitbare anhängen. – Javanator

+0

Woher kommt '3' Parameter in' setSpan'? – akhyar

+0

es ist die Länge auf der Zeichenkette "abc" –

38

android:drawableRight oder android:drawableLeft mit (abhängen, wo Sie align Bild bevorzugen)

<EditText 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:id="@+id/searchedTxt" 
     android:width="200dp" 
     android:layout_alignParentRight="true" 
     android:drawableRight="@android:drawable/ic_menu_search" 
     android:drawablePadding="@dimen/dimen_10dp" 
     /> 
+1

Dieser Typ verdient eine Medaille. Danke, Alter! –

+0

In der neuesten Android-Studio 2.2.3, ist es ratsam, Android zu verwenden: DrawableEnd anstelle von Android: DrawableRight –

59

enter image description here

Verwendung des Frame-Layout ist sehr einfach zu Überwinde das. Hier ist ein weiterer Vorteil, dass du Click-Events für Buttons geben kannst, wenn du Icons einstellst Mit SetCompoundDrawables können Sie die Klickereignisse nicht angeben. Ich habe in meinem Projekt implementiert, dass die Suchleiste Symbole zum Löschen und Suchen enthält.

<FrameLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 

      <EditText 
       android:id="@+id/search" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/search_bar" 
       android:drawablePadding="8dp" 
       android:paddingLeft="30dp" 
       android:paddingRight="10dp" 
       android:inputType="text" 
       android:maxLines="1"> 

       <requestFocus /> 
      </EditText> 

      <Button 
       android:id="@+id/searchBtn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="left|center_vertical" 
       android:layout_margin="10dp" 
       android:background="@drawable/icon_magnify" /> 

      <Button 
       android:id="@+id/delete" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="right|center_vertical" 
       android:layout_margin="8dp" 
       android:background="@drawable/icon_remove" /> 
     </FrameLayout> 
+0

Wie kann ich Click-Ereignisse auf Schaltfläche hinzufügen? – Scorpion

+0

findViewById (R.id.delete) .setOnClickListener (neue Ansicht.OnClickListener() { \t \t \t \t \t \t @Override \t \t \t public void onClick (Blick v) { \t \t \t \t // TODO Automatisch generierte Methode Stub \t \t \t \t \t \t \t} \t \t}); –

+0

können Sie die zeichnenden Bilder zur Verfügung stellen !! – ManishSB

1

EditText Klasse erweitern und den Code zu tun, wie es u wollen, dies sein

public void setImage(String imageResource) { 
    int position = Selection.getSelectionStart(MyEditText.this 
      .getText()); 

    Spanned e = Html.fromHtml("<img src=\"" + imageResource + "\">", 
      imageGetter, null); 

    MyEditText.this.getText().insert(position, e); 
} 
+0

was wird die imageResource sein? Wird es der Bildpfad wie /sdcard/images/image1.jpg sein? – NarendraJi

0

Sie können versuchen, wenn Sie in Adapterklasse

holder.myEditText.setCompoundDrawablesWithIntrinsicBounds(null, null, 
      _context.getResources().getDrawable(R.drawable.ic_launcher), 
      null); 
sind

und Sie kann dies versuchen, wenn Sie in Aktivitätsklasse

myEditText.setCompoundDrawablesWithIntrinsicBounds(null, null, 
      getResources().getDrawable(R.drawable.ic_launcher), 
      null); 
0

eine Instanz der

EditText editText = (EditText) findViewById(R.id.EditText1); 
EditText erstellen

Then einem ziehbaren Instanz des Bildes erzeugen

Drawable image = getResources().getDrawable(R.drawable.ic_warning); // API 21 and below. 

OR

Drawable image = getDrawable(R.drawable.ic_warning); // API 22 and above. 

dann das Bild gesetzt durch setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom);

editText.setCompoundDrawablesWithIntrinsicBounds(null, null, image, null); 

die obige Zeile in der rechten Seite des Bildes gesetzt Berufung die EditText

Verwandte Themen