js监听事件 Android 设置EditText的DrawableRight和Drawabl
在我们进行开发的时候,经常会遇到需要给设置点击的时候,特别是在登录界面清除密码框的时候,但是并不支持点击事件监听。所以我们需要重写控件
重写的控件:
package com.lb.frame.views;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
/**
* Created by libin on 2016/11/18.
*/
public class AddAndSubEditText extends EditText {
private OnDrawableLeftListener mLeftListener;
private OnDrawableRightListener mRightListener;
private OnDrawableListener drawableListener;
final int DRAWABLE_LEFT = 0;
final int DRAWABLE_TOP = 1;
final int DRAWABLE_RIGHT = 2;
final int DRAWABLE_BOTTOM = 3;
@SuppressLint("NewApi")
public AddAndSubEditText(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public AddAndSubEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public AddAndSubEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AddAndSubEditText(Context context) {
super(context);
}
public void setOnDrawableLeftListener(OnDrawableLeftListener listener) {
this.mLeftListener = listener;
}
public void setOnDrawableRightListener(OnDrawableRightListener listener) {
this.mRightListener = listener;
}
public void setOnDrawableClickListener(OnDrawableListener listener) {
this.drawableListener = listener;
}
public interface OnDrawableListener {
void onDrawableLeftClick(View view);
void onDrawableRightClick(View view);
}
public interface OnDrawableLeftListener {
void onDrawableLeftClick(View view);
}
public interface OnDrawableRightListener {
void onDrawableRightClick(View view);
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
if (mRightListener != null) {
Drawable drawableRight = getCompoundDrawables()[DRAWABLE_RIGHT];
if (drawableRight != null && event.getRawX() >= (getRight() - drawableRight.getBounds().width())) {
mRightListener.onDrawableRightClick(this);
return true;
}
}
if (drawableListener != null) {
Drawable drawableRight = getCompoundDrawables()[DRAWABLE_RIGHT];
if (drawableRight != null && event.getRawX() >= (getRight() - drawableRight.getBounds().width())) {
drawableListener.onDrawableRightClick(this);
return true;
}
Drawable drawableLeft = getCompoundDrawables()[DRAWABLE_LEFT];
if (drawableLeft != null && event.getRawX() <= (getLeft() + drawableLeft.getBounds().width())) {
drawableListener.onDrawableLeftClick(this);
return true;
}
}
if (mLeftListener != null) {
Drawable drawableLeft = getCompoundDrawables()[DRAWABLE_LEFT];
if (drawableLeft != null && event.getRawX() <= (getLeft() + drawableLeft.getBounds().width())) {
mLeftListener.onDrawableLeftClick(this);
return true;
}
}
break;
}
return super.onTouchEvent(event);
}
}
注意:如果在重写控件时,继承的报错,提示你需要使用v7支持包js监听事件js监听事件,这个时候我们可以忽略,直接使用即可
使用:
people_num_et.setOnDrawableClickListener(new AddAndSubEditText.OnDrawableListener() {
@Override
public void onDrawableLeftClick(View view) {
if (peopleNum > 1) {
people_num_et.setText(String.valueOf(--peopleNum));
} else {
T.show("至少1人");
}
}
@Override
public void onDrawableRightClick(View view) {
if (peopleNum < 3) {
people_num_et.setText(String.valueOf(++peopleNum));
} else {
T.show("最多3人");
}
}
});
people_num_et.setOnDrawableLeftListener(new AddAndSubEditText.OnDrawableLeftListener() {
@Override
public void onDrawableLeftClick(View view) {
if (peopleNum > 0) {
people_num_et.setText(--peopleNum);
}
}
});
people_num_et.setOnDrawableRightListener(new AddAndSubEditText.OnDrawableRightListener() {
@Override
public void onDrawableRightClick(View view) {
if (peopleNum < 3) {
people_num_et.setText(++peopleNum);
} else {
T.show("最多3人");
}
}
});
js监听事件 Android 设置EditText的DrawableRight和Drawabl
https://xsunhua.cn/267.html



共有 0 条评论