自定义TextView中动态设置图片大小

开发过程中,很多场景中都有用到文本和图片并列显示的情况,如下图示:
TextView
上图红色框中的布局你会怎么实现?

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 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值