Android 学习第二天 --------EditText

来源:转载

简单列子 通过这例子学习了EditText 。
如何设置EditText 监听器。

直接上代码!activity_main.xml  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.edittext.MainActivity" >

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/text01"
        android:textSize="20sp"
        />
    <EditText 
        android:id="@+id/edit01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint01"
        android:digits="@string/charsordigits"
        
        />
    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/text02"
        android:textSize="20sp"
        />
    <EditText 
        android:id="@+id/edit02"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint02"   
        />
</LinearLayout> -===========================-===========================-===========================-===========================

MainActivity.java 代码。
package com.example.edittext;


import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher;
import android.widget.EditText;




public class MainActivity extends Activity {
private EditText editText01;
private EditText editText02;
private MyTextWatcher myTextWatcher;
   
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText01=(EditText) findViewById(R.id.edit01);
        editText02=(EditText) findViewById(R.id.edit02);
        //定义一个输入过滤器, 在EditText01输入最大为10
        InputFilter[] ifs={new InputFilter.LengthFilter(10)};
        editText01.setFilters(ifs);
        editText01.setText("");
//        为控件 editText02定义一个文字改变监听器
        myTextWatcher=new MyTextWatcher(editText02,"");
        
//        为控件editText02添加一个文字改变监听器。
        editText02.addTextChangedListener(myTextWatcher);
        
//        为控件editText01定义一个文字改变监听器。
        editText01.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable s) {
editText02.removeTextChangedListener(myTextWatcher);
myTextWatcher=new MyTextWatcher(editText02, s.toString());
editText02.addTextChangedListener(myTextWatcher);



}
});
    
    }
    
    
    /**
     * 定义一个文本监听器类 实现TextWatcher 接口 
     * @author Tan~74°
     *
     */
    class MyTextWatcher implements TextWatcher{
    private String tmp="";
    private String digits="abcdef";
    private EditText editText;
   
public MyTextWatcher( final EditText editText ,final String digits) {

this.digits = digits;
this.editText = editText;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
// 获取改变前的字符串
tmp=s.toString();
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {


}
@Override
public void afterTextChanged(Editable s) {
String str=s.toString();
if(str.equals(tmp)){
return ;
}
StringBuffer sb=new StringBuffer();
for(int i=0;i<str.length();i++){
if(digits.indexOf(str.charAt(i))>=0){
sb.append(str.charAt(i));
}
}
//设置tmp ,因为下面一句还会导致事件被触发。
tmp=sb.toString();
editText.setText(tmp);
//更新文件内容
editText.invalidate();

}
    }
    
    
    
    
    
  
}

===================================================================================================strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">EditText</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
<string name="text01">只是允许输入英文或者数字</string>
<string name="hint01">请输入数字</string>
<string name="text02">只允许输入上面的文本的内容,没有限制</string>
<string name="hint02">请输入字符</string>
<string name="charsordigits">456789abcdefghijklmnopqrstuvw</string>
</resources>

--------------------------------------------------------------------

解释: MyTextWatcher 定义这个类 实现TextWatcher 接口 ,同时实现三个方法,

onTextChanged  ,beforeTextChanged ,afterTextChanged 。代码不是好难,关键看自己想不想学。





分享给朋友:
您可能感兴趣的文章:
随机阅读: