项目中那些事|控件之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);
			}
		});


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值