Android-- EditText與InputFilter實現文本對比
此功能類似於臨摹。已知被臨摹的字符串,將字符串與EditText中輸入進行
對比,輸入錯誤,則用“×”替換所輸入的字符。
import android.app.Activity; import android.os.Bundle; import android.text.InputFilter; import android.text.Spanned; import android.util.Log; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MyFilterTest extends Activity { /** Called when the activity is first created. */ TextView myText; EditText myEdit; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final String str = "Hello,Android!"; myText=(TextView)findViewById(R.id.myText); myText.setText(str); myEdit=(EditText)findViewById(R.id.myEdit); myEdit.setFilters(new InputFilter[]{ new MyInputFilter(str) }); } public class MyInputFilter implements InputFilter{ String str=null; public MyInputFilter(String str){ this.str=str; } @Override public CharSequence filter(CharSequence src, int start, int end, Spanned dest, int dstart, int dend) { // TODO Auto-generated method stub String ch=null; String TAG="Filter"; Log.w(TAG,"src:"+src+";start:"+start+";end:"+end); Log.w(TAG,"dest:"+dest+";dstart:"+dstart+";dend:"+dend); if(dest.length()<str.length()){ ch=str.substring(dstart+start, dstart+end); }else{ return dest.subSequence(dstart, dend); } if(ch.equals(src)){ Toast.makeText(MyFilterTest.this, "match", Toast.LENGTH_SHORT).show(); return dest.subSequence(dstart, dend)+src.toString(); }else{ Toast.makeText(MyFilterTest.this, "mismatch", Toast.LENGTH_SHORT).show(); return dest.subSequence(dstart, dend)+"×"; } } } }
MyFilterTest.rar (852 Bytes)
最後更新:2017-04-04 07:03:42