实现在EditText中输入自定义表情,需要将放在drawable中的表情图片,嵌入到EditText中,这里利用ImageSpan实现该功能。
第一步:利用反射机制,得到图片资源的ID,生成图片bitmap对象
Field field = R.drawable.class.getDeclaredField("image" + random);
int resouceId = Integer.parseInt(field.get(null).toString());
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resouceId);
第二步:创建imageSpan对象,将imageSpan对象加载到spannableString中
ImageSpan span = new ImageSpan(getApplicationContext(), bitmap);
SpannableString spanna = new SpannableString("image");
spanna.setSpan(span, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
第三步:将SpannableString对象加到EditText中
edittext.append(spanna);
如何在EditText中限定输入字符的方式:
1.通过设置digits属性限定输入的字符:android:digits="0123456789"
2.通过设置inputtype属性选择输入字符类型:android:inputType="number"
3.通过设置numberic属性接受数字输入:android:numeric="integer"
android:inputType来设置文本的类型,让输入法选择合适的软键盘的.
android:numeric来控制输入的数字类型,一共有三种分别为integer(正整数)、signed
(带符号整数)和decimal(浮点数).
android:digits 属性 输入规则 例如:android:digits=“0123456789” 表示只能输入数字。 android:digits=“0123456789.” 表示可以输入数字和小数点
监听是否输入过小数点:
et_content.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (et_content.getText().toString().indexOf(".") >= 0) { if (et_content.getText().toString().indexOf(".", et_content.getText().toString().indexOf(".") + 1) > 0) { tv_numOfChar.setText("已经输入\".\"不能重复输入"); et_content.setText(et_content.getText().toString().substring(0, et_content.getText().toString().length() - 1)); et_content.setSelection(et_content.getText().toString().length()); } } } @Override public void afterTextChanged(Editable s) { } });
本文介绍如何在Android的EditText中插入自定义表情图标,并提供了使用ImageSpan的具体步骤。此外,还介绍了多种限制EditText输入字符的方法,包括通过digits、inputType和numeric属性进行控制。
338

被折叠的 条评论
为什么被折叠?



