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();
}
}
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();
}
}
相关文章推荐
- Android零基础入门第66节:RecyclerView点击事件处理
- Android零基础入门第66节:RecyclerView点击事件处理
- Android EditText中通过drawabeRight等添加了清空按钮 如何给按钮添加点击事件?
- Android自定义TextView中的超链接点击事件处理
- TextView 和 EditText 的 DrawableRight 点击事件的处理
- Android自定义TextView中的超链接点击事件处理
- android textview可以设置文字颜色 部分文字点击事件处理
- Android零基础入门第66节:RecyclerView点击事件处理
- android textview 自动链接网址 修改默认点击事件
- Android中父View和子view的点击事件处理问题探讨
- android ViewGroup和View触屏基础事件OnTouch处理
- Android 给TextView添加点击事件
- Android开发给TextView添加点击事件
- android textview 自动连接网址及修改默认点击事件
- android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理
- 转:android TextView中超链接的事件捕捉(textview上LINK的点击事件)
- Android TextView中链接(link)点击事件的截取
- textview 中处理spannable使得ListView的点击事件失效的解决方法
- Android之TextView------LINK的点击事件
- android TextView改变部分字体的颜色,大小,设置部分字体有点击事件