閱讀650 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 手機號碼和電話號碼的正則表達式
  下一篇:go iOS開發那些事--iOS視圖生命周期與視圖控製器關係