300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Android实现仿IOS带清空功能的文本输入框

Android实现仿IOS带清空功能的文本输入框

时间:2020-08-11 21:36:20

相关推荐

Android实现仿IOS带清空功能的文本输入框

/***@类名:ClearableEditText*@功能描述:*@作者:WilliamXu*@创建日期:-4-13*@修改人:*@修改日期:*@修改备注:*@版本号:1.0*/publicclassClearableEditTextextendsEditTextimplementsOnFocusChangeListener,TextWatcher{privateDrawablexD;publicClearableEditText(Contextcontext){super(context);init();}publicClearableEditText(Contextcontext,AttributeSetattrs){super(context,attrs);init();}publicClearableEditText(Contextcontext,AttributeSetattrs,intdefStyle){super(context,attrs,defStyle);init();}privatevoidinit(){xD=getCompoundDrawables()[2];if(xD==null){xD=getResources().getDrawable(R.drawable.search_clear);}xD.setBounds(0,0,xD.getIntrinsicWidth(),xD.getIntrinsicHeight());setClearIconVisible(false);super.setOnFocusChangeListener(this);addTextChangedListener(this);}@OverridepublicvoidsetOnFocusChangeListener(OnFocusChangeListenerf){this.f=f;}privateOnFocusChangeListenerf;@OverridepublicbooleanonTouchEvent(MotionEventevent){if(getCompoundDrawables()[2]!=null){if(event.getAction()==MotionEvent.ACTION_UP){booleantappedX=event.getX()>(getWidth()-getPaddingRight()-xD.getIntrinsicWidth());if(tappedX){setText("");event.setAction(MotionEvent.ACTION_CANCEL);}}}returnsuper.onTouchEvent(event);}@OverridepublicvoidonFocusChange(Viewv,booleanhasFocus){if(hasFocus){setClearIconVisible(getText().length()>0);}else{setClearIconVisible(false);}if(f!=null){f.onFocusChange(v,hasFocus);}}protectedvoidsetClearIconVisible(booleanvisible){Drawablex=visible?xD:null;setCompoundDrawables(getCompoundDrawables()[0],getCompoundDrawables()[1],x,getCompoundDrawables()[3]);}@OverridepublicvoidonTextChanged(CharSequences,intstart,intcount,intafter){setClearIconVisible(s.length()>0);}@OverridepublicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){//TODOAuto-generatedmethodstub}@OverridepublicvoidafterTextChanged(Editables){//TODOAuto-generatedmethodstub}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。