2010-09-13 5 views

ответ

61

Если что-то вроде этого:

EditCheck

является то, что вы говорите, то вам просто необходимо либо установить Drawable{Right | Left | Top | Bottom} свойство в XML, или вызвать соответствующую команду Java.

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

java java comma nd должен вызывать setBounds (Rect), или это canot появляется изображение – pengwang

+0

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

+0

Вы использовали изображения, отображаемые в чертежных, Но мне нужно показать, что изображения забрасывают изображения галереи, если есть возможность выбрать изображения из галереи в редактирование текстового вида. – Manoj

7

Вы можете добавить изображение в EditText через android:background="@drawable/img".

Если вы хотите изменить стиль, используя девять патчей или еще, но если вы хотите добавить небольшое изображение в левой части своего EditText, рассмотрите возможность использования android:drawableRight="@drawable/icon".

+0

@ Спасибо, я хочу добавить изображение в редактируемый текст динамически, – sivaraj

24

вы также можете попробовать это

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 этот код полезен, если вы хотите добавить больше, чем один, для динамического редактирования текста. например, для ввода ввода edittext. Пользователь может выбирать значки смайликов. нужно добавить эту Spanable String к редактируемому. – Javanator

+0

где параметр '3' в' setSpan'? – akhyar

+0

Это длина строки «abc» –

38

с помощью android:drawableRight или android:drawableLeft (в зависимости, где вы предпочитаете выравнивания изображения)

<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

Этот парень заслуживает медали. Спасибо приятель! –

+0

В последней версии Android 2.2.3 рекомендуется использовать андроид: drawableEnd вместо android: drawableRight –

59

enter image description here

Использование макета кадра очень легко преодолеть это. Еще одно преимущество заключается в том, что вы можете давать события click для кнопок. Если вы устанавливаете значки используя setCompoundDrawables, вы не можете дать клик events.I реализовали в моем проекте, что в строке поиска есть значок удаления и поиска.

<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

Как я могу добавить события кликов к кнопке? – Scorpion

+0

findViewById (R.id.delete) .setOnClickListener (новый вид.OnClickListener() { \t \t \t \t \t \t @Override \t \t \t общественного недействительными OnClick (View v) { \t \t \t \t // TODO Auto-генерироваться метод заглушки \t \t \t \t \t \t \t} \t \t}); –

+0

Вы можете предоставить рисунки! – ManishSB

1

расширить класс EditText и сделать код, как и хотят, чтобы это было

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

какой будет imageResource? Будет ли это путь к картинке как /sdcard/images/image1.jpg? – NarendraJi

0

Вы можете попробовать это, если вы находитесь в классе адаптера

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

и Вы можно попробовать это, если вы находитесь в классе деятельности

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

Создать экземпляр EditText

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

Затем создайте Drawable экземпляр изображения

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

ИЛИ

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

Затем установить изображение по телефону setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom);

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

выше линии будет установить изображение в правой части EditText

Смежные вопросы