项目中那些事|控件之EditText


1. 点击屏幕其他地方让edittext失去焦点 的实现


    方法就是:让EditText所在的layout获得焦点。

给layout注册OnTouchListener监听器
直接使用  .requestFocus()   无法获取焦点,焦点依然在EditTtext上
先调用下面这两个方法:
.setFocusable(true);
.setFocusableInTouchMode(true);
再调用  .requestFocus() 就可获取焦点


//必须

relative.setOnTouchListener(new OnTouchListener() {
                        
                        public boolean onTouch(View v, MotionEvent event) {
                               
                                relative.setFocusable(true);
                                relative.setFocusableInTouchMode(true);

                                relative.requestFocus();

                                return false;
                        }
                });
// 失去焦点触发
eidt.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View arg0, boolean arg1) {

if (remove_btn.hasFocus() == false) {

//失去焦点时做某事


}

}

}


2.关于EditText的焦点问题(默认进入不弹出键盘)

父控件设置下面属性,拦截焦点即可

  1.      android:focusable="true"  
  2.      android:focusableInTouchMode="true"  


3.过滤表情符的输入

      EditText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(
						length) ,emjorFilter});// 设置输入最大字符数
	
	
      // 过滤输入法表情  
      public InputFilter emjorFilter = new InputFilter() {  
		Pattern emoji = Pattern
				.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff                                           ]",Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
		@Override
		public CharSequence filter(CharSequence source, int start, int end,
				Spanned dest, int dstart,int dend) {
			Matcher emojiMatcher = emoji.matcher(source);
			if (emojiMatcher.find()) {
				return "";
			}
			return null;
		}
    };  


4.允许多行输入,禁止输入时回车换行

		EditText.setOnEditorActionListener(new OnEditorActionListener() {            
			@Override
			public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
				// TODO Auto-generated method stub
				return (arg2.getKeyCode() == KeyEvent.KEYCODE_ENTER);
			}
		});


你可能感兴趣的:(项目中那些事|控件之EditText)