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);
}
}
使用方法:同时设置左右两边的图片点击事件,也可单独设置,方便使用
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人");
}
}
});参考:http://blog.csdn.net/lib739449500/article/details/50236439修改
转载请注明原文地址: https://ju.6miu.com/read-680215.html