大佬教程收集整理的这篇文章主要介绍了android – 在事件上显示复合drawable到EditText,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在活动中:
clear = getresources().getDrawable(R.drawable.round_clear); clear.setBounds(0,clear.geTintrinsicWidth(),clear.geTintrinsicHeight());
和事件
@Override public void onFocusChange(View v,Boolean hasFocus) { switch (v.getId()) { case R.id.uIDEditText: if(hasFocus && !uIDEditText.getText().toString().isEmpty()) uIDEditText.setCompoundDrawables(null,null,clear,null); else uIDEditText.setCompoundDrawables(null,null); break; case R.id.pwdEditText: if(hasFocus && !pwdEditText.getText().toString().isEmpty()) pwdEditText.setCompoundDrawables(null,null); else pwdEditText.setCompoundDrawables(null,null); break; } }
另一个事件是:
@Override public Boolean onTouch(View v,MotionEvent event) { switch (v.getId()) { case R.id.uIDEditText: final int x = (int)event.getX(); final int y = (int)event.getY(); if(event.getAction() == MotionEvent.ACTION_UP && clear!=null) { Rect rBounds = clear.getBounds(); int n1 = v.getright(); int n2 = v.getright()+rBounds.width(); int n3 = v.getPaddingTop(); int n4 = v.getHeight()-v.getPaddingBottom(); if(x>=(n1) && x<=(n2) && y>=n3 && y<=(n4)) { uIDEditText.setText(""); event.setAction(MotionEvent.ACTION_CANCEL); } } break; } }
public class CustomEditText extends EditText { private Drawable dRight; private Rect rBounds; CustomEditText(Context context,AttributeSet attributeSet){ super(context,attributeSet); } @Override public void setCompoundDrawables(Drawable left,Drawable top,Drawable right,Drawable bottom) { /*if (left != null) { dLeft = left; }*/ if (right != null) { dRight = right; } super.setCompoundDrawables(left,top,right,bottom); } @Override public void addTextChangedListener(TextWatcher watcher) { super.addTextChangedListener(watcher); } @Override protected void ontextChanged(CharSequence text,int start,int lengthBefore,int lengthAfter) { super.ontextChanged(text,start,lengthBefore,lengthAfter); if(this.getText().toString().length()>0) this.setCompoundDrawablesWithIntrinsicBounds(null,dRight,null); else this.setCompoundDrawablesWithIntrinsicBounds(null,null); } @Override protected void finalize() throws Throwable { dRight = null; rBounds = null; super.finalize(); } }
并添加到xml中:
<com.example.screen.CustomEditText android:id="@+id/uIDEditText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableRight="@drawable/round_clear" android:textColor="#ffffff" />
在Activity中(edittext ontouch侦听器):
uIDEditText.setOnTouchListener(new OnTouchListener() { @Override public Boolean onTouch(View v,MotionEvent event) { if (event.getAction() != MotionEvent.ACTION_Up) return false; if (event.getX() > uIDEditText.getWidth() - clear.geTintrinsicWidth()) { uIDEditText.setText(""); event.setAction(MotionEvent.ACTION_CANCEL); } return false; } });
以上是大佬教程为你收集整理的android – 在事件上显示复合drawable到EditText全部内容,希望文章能够帮你解决android – 在事件上显示复合drawable到EditText所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。