在Android开发中我们经常遇到TextView左上右下有图片的UI布局情形,并且各个图片点击后都要做相应的逻辑操作,这种情况下我们首先想到的是利用线性布局或相对布局去排版,然后给每个图片设置id,再在代码中去获取对应的控件,最后再设置相应的点击事件。这是最常用、最普遍的做法,也比较简单通俗易懂。但是这样写的弊端就是在XML布局文件中代码显得很臃肿,阅读性较差。
最近在做个类似与京东商城的项目,里面有很多类似于这样的布局,由于本人有很强的强迫症,故在网上各种搜索,再加上本人对TextView控件的理解。决定自定义一个UI布局简单,功能更强大的TextView。
大家都知道TextView中有drawableLeft=”“,drawableTop=”“,drawableRight=”“,drawableBottom=”“这四个属性,也就是说我们可以在TextView的左上右下添加图片。那么DrawableTextView的思想就是准确计算出左上右下四张图片在布局中的所占的点击区域,如果点击区域被点击后,则通过接口回调做相应的逻辑操作。好了,直接上代码:
1:自定义DrawableTextView
/**
* Created by salmonzhang on 2017/7/11
* 自定义一个TextView,实现左右点击监听功能
*/
public class DrawableTextView extends android.support.v7.widget.AppCompatTextView {
private DrawableRightClickListener mDrawableRightClickListener;
private DrawableLeftClickListener mDrawableLeftClickListener;
final