Android-- EditText与InputFilter实现文本对比

本文介绍了一种在Android应用中实现输入校验的方法。通过自定义InputFilter,该示例能够实时比较用户在EditText中输入的内容与预设字符串,若输入错误则用特定符号标记。适用于需要精确输入的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自marine8888将安卓进行到底...

此功能类似于临摹。已知被临摹的字符串,将字符串与EditText中输入进行

对比,输入错误,则用“×”替换所输入的字符。

Java代码 复制代码  收藏代码
  1. import android.app.Activity;   
  2. import android.os.Bundle;   
  3. import android.text.InputFilter;   
  4. import android.text.Spanned;   
  5. import android.util.Log;   
  6. import android.widget.EditText;   
  7. import android.widget.TextView;   
  8. import android.widget.Toast;   
  9.   
  10. public class MyFilterTest extends Activity {   
  11.     /** Called when the activity is first created. */  
  12.     TextView myText;   
  13.     EditText myEdit;   
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {   
  16.         super.onCreate(savedInstanceState);   
  17.         setContentView(R.layout.main);   
  18.         final String str = "Hello,Android!";   
  19.            
  20.         myText=(TextView)findViewById(R.id.myText);   
  21.         myText.setText(str);   
  22.         myEdit=(EditText)findViewById(R.id.myEdit);   
  23.            
  24.         myEdit.setFilters(new InputFilter[]{ new MyInputFilter(str) });   
  25.            
  26.     }   
  27.     public class MyInputFilter implements InputFilter{   
  28.         String str=null;   
  29.         public MyInputFilter(String str){   
  30.             this.str=str;   
  31.         }   
  32.         @Override  
  33.         public CharSequence filter(CharSequence src, int start, int end,   
  34.                 Spanned dest, int dstart, int dend) {   
  35.             // TODO Auto-generated method stub   
  36.             String ch=null;   
  37.             String TAG="Filter";   
  38.             Log.w(TAG,"src:"+src+";start:"+start+";end:"+end);   
  39.             Log.w(TAG,"dest:"+dest+";dstart:"+dstart+";dend:"+dend);   
  40.             if(dest.length()<str.length()){   
  41.                 ch=str.substring(dstart+start, dstart+end);   
  42.             }else{   
  43.                 return dest.subSequence(dstart, dend);   
  44.             }   
  45.                    
  46.             if(ch.equals(src)){   
  47.                
  48.                 Toast.makeText(MyFilterTest.this"match", Toast.LENGTH_SHORT).show();   
  49.                 return dest.subSequence(dstart, dend)+src.toString();   
  50.             }else{   
  51.                 Toast.makeText(MyFilterTest.this"mismatch", Toast.LENGTH_SHORT).show();   
  52.                 return dest.subSequence(dstart, dend)+"×";   
  53.             }   
  54.         }   
  55.            
  56.            
  57.     }   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值