問題描述
我想將圖像插入到 editText 我的代碼是:
I want to insert a image to a editText my code is:
CharSequence charSeq= editText.getText()+" ";
SpannableString ss2 = new SpannableString(charSeq);
Drawable d2 = holder.image.getDrawable();
d2.setBounds(0, 0, d2.getIntrinsicWidth(), d2.getIntrinsicHeight());
ImageSpan span2 = new ImageSpan(d2, ImageSpan.ALIGN_BASELINE);
ss2.setSpan(span2,charSeq.length()-1, charSeq.length(),
Spannable.SPAN_INCLUSIVE_INCLUSIVE);
editText.setText(ss2,BufferType.SPANNABLE);
我的代碼可以運行,但我有一些不錯的經驗我想修改:
My code can run but i have some not bad experience i want to modify:
1:你知道當使用ss2.setSpan()方法時,圖片可以替換字符,我只想插入新圖片,不想圖片替換字符.
1: You know when use ss2.setSpan() method, the image can replace the character, i only want to insert new image, donot want to the image replace the character.
2:你知道我的方法包括editText.getText()+";",我添加了一些額外的空間,以便圖像可以插入到 CharSequence 的最后.怎么不用添加一些Extra,圖片也插入到CharSequence的最后.
2: you know my method include "editText.getText()+" ";", i add some Extra space, so that the image can insert to the last of the CharSequence. how to not need add add some Extra, the image also insert to the last of the CharSequence.
3.當我將圖像插入到 CharSequence 的最后時,光標不在最后,它出現在 CharSequence 的前面.如何將光標放在圖像的后面.
3.when i insert the image to the last of the CharSequence, the cursor not at the last, it appear in the front of the CharSequence. how to put the cursor at the behind the image.
4.我想不斷的在不同的CharSequence中插入圖片,怎么辦?
4.i want to constantly insert the image in the different of the CharSequence,how to do?
我的問題太多了,希望你能幫助我,非常感謝.
My question so many, I want you can help me thank you very very much.
推薦答案
做這樣的事情(注意:可以復用 SpannableStringBuilder)
Do something like this (note: you can reuse SpannableStringBuilder)
editText = (EditText)mRoot.findViewById(R.id.content);
ImageSpan imageSpan = new ImageSpan(preview);
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(editText.getText());
// this is a string that will let you find a place, where the ImageSpan is.
String imgId = "[img=1]";
int selStart = editText.getSelectionStart();
// current selection is replaceв with imageId
builder.replace(editText.getSelectionStart(), editText.getSelectionEnd(), imgId);
// This adds a span to display image where the imageId is. If you do builder.toString() - the string will contain imageId where the imageSpan is.
// you can use it later - if you want to find location of imageSpan in text;
builder.setSpan(imageSpan, selStart, selStart + imgId.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setText(builder);
注意:請參閱后續回答處理部分刪除標簽
Note: See follow up answer for dealing with partial deletion of tags
這篇關于如何將圖像插入editText的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!