EditText属性,这里只讲输入限制的属性:
android:enabled="false" //设置输入框不能被编辑,同时也可以在activity中设置text.SetEnable(false)
android:digits="1234567890.+-*/%n()" //限制输入框中只能输入自己定义的这些字符串 如果输入其它将不予以显示
android:phoneNumber="true" //限制输入框中只能输入手机号码
android:password="true" //限制输入框中输入的任何内容将以"*"符号来显示
android:hint="默认文字" //输入内容前默认显示在输入框中的文字
android:textColorHint="#FFF000" //设置文字内容颜色
顺带把锁定输入键盘弹出时为数字键盘分享给大家:android:inputType=”number”
如果还有一些特殊的限制,比如我做一个项目只能输入数字,且输入a之后再输入A,则只显示A,这就需要单独去进行设置了,也非常的简单。
给EditText添加一个监听事件,当检测到里面的内容变化以后,根据需求,修改相关的内容就可以了。
使用EditText的addTextChangedListener(TextWatcher watcher)方法对EditText实现监听,TextWatcher是一个接口类,所以必须实现TextWatcher里的抽象方法:
当EditText里面的内容有变化的时候,触发TextChangedListener事件,就会调用TextWatcher里面的抽象方法。
public class MainActivity extends Activity {
private EditText text;
String str;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
text = (EditText)findViewById(R.id.text); text.addTextChangedListener(textWatcher); }
private TextWatcher textWatcher = new TextWatcher() {
@Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub Log.d("TAG","afterTextChanged--------------->"); }
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub Log.d("TAG","beforeTextChanged--------------->"); } @Override public void onTextChanged(CharSequence s, int start, int before, //大家做输入特殊设置只需写此方法即可 int count) { Log.d("TAG","onTextChanged--------------->"); str = text.getText().toString(); try { //if ((heighText.getText().toString())!=null) Integer.parseInt(str);
} catch (Exception e) { // TODO: handle exception
}
} }; |
}
该方法可以监听到Edittext的变化,我在onTextChanged里面监听s值得变化,然后做修改以后再setText到EditText里面,不过这时候经常会遇见光标跑到最前面的情况,很恶心,随意每次setText的时候都需要用ev.setSelection(str.length())去重新设置光标位置为str字符串的最后。