曾经一度被这个问题困扰了很久,在网上找了N久都没发现好方法,不是太麻烦,就是根本不能实现。
最后的最后终于这个被很可笑的解决的了,之所以可笑是因为我拿这个问题去问别人,那人思索良久,最后还是告诉我不能解决,但是可以提供一个思路,反正我也没办法了,就所幸听他说一下吧,一说果然是都被我试了N次而放弃的方法,但碍于面子就没打他,可是就在我装作很认真的听着的时候,忽然不经意的一句话给了我答案,于是就这么解决了,方法简单的要死,好吧,下面就说说吧
首先我是用ListView显示的聊天内容(我弄的是一个聊天室的的东西),当然这都无所谓,之用一个EditText也OK,
这是我插入表情的对话框,相信不难看懂吧。
public void showImageDialog() { LayoutInflater inflater = LayoutInflater .from(AndroidClientActivity.this); LinearLayout layout = (LinearLayout) inflater.inflate( R.layout.dialoglayout, null); AlertDialog.Builder builder = new AlertDialog.Builder( AndroidClientActivity.this); builder.setTitle("选择表情") .setMessage("要添加的表情") .setView(layout); GridView gv = (GridView) layout.findViewById(R.id.gridview); g.simpleAdapter = new SimpleAdapter(AndroidClientActivity.this, list, R.layout.itemlayout, new String[] { "face" }, new int[] { R.id.itemImageview }); gv.setAdapter(g.simpleAdapter); gv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { @SuppressWarnings("unchecked") HashMap<String, Object> m = (HashMap<String, Object>) parent .getAdapter().getItem(position); CharSequence cs = Html.fromHtml("<img src='" + m.get("face") + "'/>", imageGetter, null); System.out.println("face-----"+Html.toHtml((Spanned) cs)); int cursor = etMsg.getSelectionStart(); etMsg.getText().insert(cursor,cs); } });
插入之前需要定义这样一个接口,这个在网上都是可以找到的