第一步:创建SmiliesEditText类继承EditText如下:

import android.content.Context;import android.graphics.Canvas;import android.graphics.drawable.Drawable;import android.text.Spannable;import android.text.SpannableString;import android.text.style.ImageSpan;import android.util.AttributeSet;import android.widget.EditText;public class SmiliesEditText extends EditText {public SmiliesEditText(Context context) {super(context);}public SmiliesEditText(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);}//在编辑框顶部添加图片public void setDrawableTop(Drawable top) {setCompoundDrawablesWithIntrinsicBounds(null, top, null, null);}//在编辑框顶部添加图片public void setDrawableTop(int top) {setCompoundDrawablesWithIntrinsicBounds(0, top, 0, 0);}//在编辑框顶部左边图片public void setDrawableRight(int right) {setCompoundDrawablesWithIntrinsicBounds(0, 0, right, 0);}//在编辑框左边添加图片public void setDrawableLeft(int left) {setCompoundDrawablesWithIntrinsicBounds(left, 0, 0, 0);}//在编辑框底部添加图片public void setDrawableButtom(int buttom) {setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, buttom);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);}//在编辑框内添加图片或者表情public void insertIcon(int id) {SpannableString ss = new SpannableString(getText().toString()+ "[smile]");//new一个SpannableString里面包含EditText已有内容,另外添加一个字符串[smile]用于在后面替换一个图片Drawable d = getResources().getDrawable(id);d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);//将图片实例化为一个ImageSpan型ss.setSpan(span, getText().length(),getText().length() + "[smile]".length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//将ImageSpan代替之前添加的[smile]字符串setText(ss);}}

第二步:设计xml如下:也可以在activity中直接new一个控件出来

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#bfbfbf"     >    <com.example.widget.SmiliesEditText        android:id="@+id/edit"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:padding="@dimen/padding_medium" /></RelativeLayout>

第三步:编写MainActivity类作为演示控件是否实现了需要的功能

import android.app.Activity;import android.os.Bundle;import android.view.Menu;import com.example.widget.SmiliesEditText;public class MainActivity extends Activity {private SmiliesEditText edit;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        edit = (SmiliesEditText) this.findViewById(R.id.edit);        edit.append("大家好");        edit.setDrawableRight(R.drawable.bottle_close_frame_highlight);        edit.insertIcon(R.drawable.e40f);        edit.append("哈哈哈");    }    }

第四步:运行结果如图:


android EditText 添加图片表情以及在四个方向上绘制图片

更多相关文章

  1. Android Base64字符串转换成图片
  2. Android控件笔记——在界面中显示图片
  3. Android 下载图片的问题
  4. Android View转换成图片保存
  5. Unity调用Android保存图片到相册
  6. Android图片压缩
  7. 【Android】android图片轮播
  8. Android:EditText插入图片实现图文混排
  9. Android之GLES2.0显示图片测试代码

随机推荐

  1. android开发实践之ndk编译命令简单示例
  2. Handler消息分发机制之难点解析
  3. Android(安卓)应用界面设计
  4. Android(安卓)开发艺术探索笔记(23)
  5. Android逆向之旅---动态方式破解apk进阶
  6. Android多线程篇(下)-安卓基础知识整理
  7. [置顶] Android(安卓)Settings源码流程分
  8. 一篇文章带你搞定 Android(安卓)项目的目
  9. Android文档阅读之Txt文档阅读的方案实现
  10. Android(安卓)数据存储:五大存储之SQLite