android:edittext学习记录

实现在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) {
 
             }
         });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值