zoukankan      html  css  js  c++  java
  • 带删除的edittext

      1 package com.sixin.view;
      2 
      3 import android.content.Context;
      4 import android.graphics.Canvas;
      5 import android.graphics.Color;
      6 import android.graphics.Paint;
      7 import android.graphics.Rect;
      8 import android.graphics.drawable.Drawable;
      9 import android.text.Editable;
     10 import android.text.TextWatcher;
     11 import android.util.AttributeSet;
     12 import android.view.MotionEvent;
     13 import android.widget.EditText;
     14 
     15 import com.sixin.R;
     16 
     17 /**
     18  * 带删除图标的EditText
     19  * 
     20  * @author shidongxue
     21  * 
     22  */
     23 public class EditTextWithDel extends EditText {
     24     private Drawable imgInable;
     25     private Context mContext;
     26     private Paint mPaint;
     27 
     28     public EditTextWithDel(Context context) {
     29         super(context);
     30         mContext = context;
     31         init();
     32     }
     33 
     34     public EditTextWithDel(Context context, AttributeSet attrs, int defStyle) {
     35         super(context, attrs, defStyle);
     36         mContext = context;
     37         init();
     38     }
     39 
     40     public EditTextWithDel(Context context, AttributeSet attrs) {
     41         super(context, attrs);
     42         mContext = context;
     43         init();
     44     }
     45 
     46     private void init() {
     47         mPaint = new Paint();
     48         mPaint.setStyle(Paint.Style.STROKE);
     49         mPaint.setColor(Color.GRAY);
     50         imgInable = mContext.getResources().getDrawable(R.drawable.btn_del);
     51         addTextChangedListener(new TextWatcher() {
     52             @Override
     53             public void onTextChanged(CharSequence s, int start, int before, int count) {
     54             }
     55 
     56             @Override
     57             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
     58             }
     59 
     60             @Override
     61             public void afterTextChanged(Editable s) {
     62                 setDrawable();
     63             }
     64         });
     65         setDrawable();
     66     }
     67 
     68     // 设置删除图片
     69     public void setDrawable() {
     70         if (length() > 0 && isFocused()) {
     71             setCompoundDrawablesWithIntrinsicBounds(null, null, imgInable, null);
     72         } else {
     73             setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
     74         }
     75     }
     76 
     77     @Override
     78     protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
     79         super.onFocusChanged(focused, direction, previouslyFocusedRect);
     80         if (focused) {
     81             setCursorVisible(true);
     82         } else {
     83             setCursorVisible(false);
     84         }
     85         setDrawable();
     86     }
     87 
     88     // 处理删除事件
     89     @Override
     90     public boolean onTouchEvent(MotionEvent event) {
     91         if (imgInable != null && event.getAction() == MotionEvent.ACTION_UP) {
     92             int eventX = (int) event.getRawX();
     93             int eventY = (int) event.getRawY();
     94             Rect rect = new Rect();
     95             int r = getPaddingRight();
     96             getGlobalVisibleRect(rect);
     97             rect.left = rect.right - r - 60;
     98             rect.right = rect.right - r;
     99             if (rect.contains(eventX, eventY))
    100                 setText("");
    101         }
    102         return super.onTouchEvent(event);
    103     }
    104 
    105     @Override
    106     protected void onDraw(Canvas canvas) {
    107         super.onDraw(canvas);
    108     }
    109 
    110     @Override
    111     protected void finalize() throws Throwable {
    112         super.finalize();
    113     }
    114 
    115 }
  • 相关阅读:
    DRF 版本和认证
    DRF 视图和路由
    DRF 序列化组件
    RESTful
    Vuex以及axios
    npm、webpack、vue-cli
    Vue 生命周期
    Vue Router
    Vue 组件
    Vue 快速入门
  • 原文地址:https://www.cnblogs.com/dongweiq/p/4047988.html
Copyright © 2011-2022 走看看