第一步:创建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);
}
@Override
protected 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);
}
@Override
protected 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("哈哈哈");
}
}
第四步:运行结果如图:
- 大小: 20.1 KB
分享到:
相关推荐
android EditText禁止输入法表情,完美解决表情不能屏蔽的情况,不存在个别表情屏蔽不了的情况,不明白的地方可以参考我的博客。
Android EditText 禁止emoj表情输入
Android EditText插入QQ表情源码,测试已经通过,可下载查看。
android 输入框EditText禁止输入Emoji表情符,博客地址:http://blog.csdn.net/elsdnwn/article/details/45390771
类似微信的表情输入,点击表情按钮,弹出表情选择,选择表情后输入edittext
android edittext 添加表情,可以添加表情,也可以把带表情的字符串解析出来,很好很强大
利用emoji图片表情的编码过滤筛选字符串
根据微信使用EditText 发送表情!
android EditText跟随键盘弹出,背景不会被顶上去
EditText中输入表情和文字,仿照扣扣表情
Android ContextMenu实例,为EditText文本框添加上下文菜单,菜单激活并显示的方式是,用户在EditText输入框上面长按2秒,即可弹出上下文菜单,如运行截图所示的效果,为实现此功能,创建了onCreateContextMenu ...
Android-Prefix-Input 为EditText添加prefix 前缀模式
通过Html方式实现图片在EditText中显示。
Android EditText插入QQ表情源码.rar
Android程序研发源码Android EditText插入QQ表情源码
android edittext不弹出软键盘三种方法“: 方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如: <activity android:name=".Main" android:...
学习有关Android EditText属性
AndroidEditText插入QQ表情源码.zip
Android EditText插入QQ表情源码.zip