widget(2、EditText)

EditText 是一个文本输入框,主要用到的类型是普通文本输入或密码输入。

通常设置如下:

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10" //表示输入框的字符长度
        android:inputType="textPassword" /> //表示输入的是字符类型密码

EditText 有常用API如下:

editview = (EditText)findViewById(R.id.editText1);
pdview   = (EditText)findViewById(R.id.editText2);

pdview.setText(editview.getText().toString()); //输入内容的获取及赋值

EditText 常用如下两个事件监听,处理输入过程及完成。

  • 焦点改变
editview.setOnFocusChangeListener(new OnFocusChangeListener(){
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(!hasFocus){ //当该控件失去焦点时
            Log.i(TAG_ACTIVITY, editview.getText().toString());
        }    
    }    
});
  • 输入过程判断(模糊搜索) 
editview.addTextChangedListener(new TextWatcher(){

    @Override
    public void afterTextChanged(Editable arg0) {
    
//完成输入时的字符串 textview.setText(arg0); } @Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
//例如
//当前字符串为:我要输入
//光标位置为:我*要输入
//编辑框选择为:要输入
//输入为:不要输入
//则:start = 1,count = 3, after = 4, s = 我不要输入 textview.setText(
"您正在输入......\n当前光标处在第 " + start +" 个位置\n您将会修改 " + count + " 个字符\n您这次输入的词语有 " + after + " 个字符\n" + "当前输入为:" + s.toString()); } @Override public void onTextChanged(CharSequence s, int start, int before,int count) {
    //例如
//当前字符串为:我要输入
//光标位置为:我*要输入
//编辑框选择为:要输入
//输入为:不要输入
//则:start = 1,before = 3, count= 4, s = 我不要输入
textview.setText("您正在输入......\n当前光标处在第 " + start +" 个位置\n您选择修改 " + before + " 个字符\n您这次输入的词语有 " + count + " 个字符\n" + "当前字符串为:" + s.toString());} });
posted @ 2013-01-23 20:24  Fredric_2013  阅读(298)  评论(0编辑  收藏  举报