您的位置:首页 > 移动开发 > Android开发

Android 基础, TextView drawRight 点击事件处理

2018-03-05 17:02 411 查看
基本思路:
tv点击区域坐标和draw上图片的坐标相比较,便可得知是否点击到图片;
如何获取点击坐标,重写tv的ontouch方法
如何获取图片在TV上的位置,getCompoundDrawables该方法返回tv四周(left, top, right, and bottom borders)
的drawable.部分代码:public class MyTextView extends android.support.v7.widget.AppCompatTextView {
private DrawableRightClickListener mRightListener;

public MyTextView(Context context) {
super(context);
}

public MyTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}

public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
if (mRightListener != null) {
Drawable drawableRight = getCompoundDrawables()[2];//
if (drawableRight != null && event.getX() >= (getRight() - drawableRight.getBounds().width())) {
mRightListener.click();
return true;
}
}
break;
default:
break;
}
return super.onTouchEvent(event);
}

public void setRightListener(DrawableRightClickListener mRightListener) {
this.mRightListener = mRightListener;
}

/**
* 点击事件
*/
interface DrawableRightClickListener {
void click();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: