开发过程中,很多场景中都有用到文本和图片并列显示的情况,如下图示:
上图红色框中的布局你会怎么实现?
1、在水平LinearLayout布局中放一个ImageView和一个TextView进行实现?
2、在TextView中设置其drawableLeft进行实现?
以上两种方式在实现上是没有问题,但是都有其明显的缺点:
第一种方式:实现过程中需要添加嵌套三个控件,对于一些复杂页面会增加嵌套层级,同时也提高了View的绘制时间,不利于布局优化。
第二种方式:这个相对于前一个来说在布局上有很大的优化,只需要在TextView中设置其在各个方向上的drawable即可,但这个drawable的大小是不能够通过代码进行设置的,只能让UI裁剪成合适大小的图片使用,Android机型辣么多,确定能够所有的都合适?
我们经常会听到自定义View,那我们就用自定义View来进行实现。由于TextView就有设置图片drawable的属性,那么我们就直接继承AppCompatTextView来实现。
1、自定义View的属性
我们需要设置TextView的图片显示以及图片的宽高,而且我们不确定要设置再其哪个方向上,所以给他定义一个动态配置的属性可供选择,因此我们可以在values/attrs.xml中如下定义:
<!-- 自定义图片的TextView -->
<declare-styleable name="DrawableTextView">
<attr name="drawableImage" format="reference" />
<attr name="drawableWidth" format="dimension" />
<attr name="drawableHeight" format="dimension" />
<attr name="drawableLocation">
<enum