2010-09-13 17 views

Respuesta

61

Si algo como esto:

EditCheck

es lo que está hablando, a continuación, sólo tiene que establecer la propiedad ya sea Drawable{Right | Left | Top | Bottom} en el xml, o llame el comando java correspondiente.

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

java java coma nd debería llamar a setBounds (Rect), o no puede aparecer imagen – pengwang

+0

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

+0

Has usado las imágenes que se muestran en drawable, Pero necesito mostrar las imágenes arrojar imágenes de la galería si hay alguna posibilidad de elegir las imágenes de la galería en la vista de edición de texto. – Manoj

7

Se puede añadir una imagen a su través EditTextandroid:background="@drawable/img".

Si desea modificar el estilo utilizando nueve parches o de lo contrario, pero si desea agregar una imagen pequeña a la izquierda de su EditText considere usar android:drawableRight="@drawable/icon".

+0

@Gracias sami, quiero agregar imagen en el texto de edición de forma dinámica, – sivaraj

24

también se puede probar este

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 este código es útil si desea agregar más de un dibujable al texto de edición de forma dinámica. por ejemplo, texto de edición de chating. El usuario puede seleccionar iconos sonrientes. uno necesita agregar esta Cadena de Spanable a la editable. – Javanator

+0

¿de dónde viene el parámetro '3' en' setSpan'? – akhyar

+0

es la longitud de la cadena "abc" –

38

usando android:drawableRight o android:drawableLeft (depende donde prefiere imagen align)

<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

Este tipo merece una medalla. Gracias amigo! –

+0

En el último android studio 2.2.3, es aconsejable usar android: drawableEnd en lugar de android: drawableRight –

59

enter image description here

utilizando el diseño del marco es muy fácil supere esto. Otra ventaja es que puede dar clic en los eventos para los botones. si establece iconos utilizando setCompoundDrawables, no puede dar los eventos de clic. He implementado en mi proyecto que la barra de búsqueda tiene iconos para eliminar y buscar.

<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

¿Cómo puedo agregar eventos de clic al botón? – Scorpion

+0

findViewById (R.id.delete) .setOnClickListener (nueva Vista.OnClickListener() { \t \t \t \t \t \t @ Override \t \t \t public void onClick (Ver v) { \t \t \t \t // método generada automáticamente TODO código auxiliar \t \t \t \t \t \t \t} \t \t}); –

+0

puede proporcionar las imágenes dibujables !! – ManishSB

1

extender la clase EditarTexto y hacer código como quieres que sea

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

¿cuál será el imageResource? ¿Será la ruta de imagen como /sdcard/images/image1.jpg? – NarendraJi

0

Usted puede intentar esto si usted está en clase adaptador

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

y Usted puede probar esto si se encuentra en la clase de actividad

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

crear una instancia de la EditText

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

continuación, crear una instancia estirable de la imagen

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

O

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

Entonces establecer la imagen llamando setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom);

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

La línea anterior establecerá la imagen en el lado derecho de el EditText

Cuestiones relacionadas