博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TextView中DrawableXXX图片无法设置大小的解决方案
阅读量:6700 次
发布时间:2019-06-25

本文共 3142 字,大约阅读时间需要 10 分钟。

在开发过程中我们往往会遇到图片旁边带文字的布局,这种布局有些比较Low的开发会直接用一个ImageView和TextView,有经验的会给TextView设置DrawableLeft、DrawableRight等等属性,一个View搞定,但是这个属性设置图片是无法控制大小的,在xml里面,当然在Java代码里是可以设置的。

TextView textView = new TextView(mContext);        Drawable drawable = getResources().getDrawable(R.drawable.icon_friend);        // 设置图片的大小        drawable.setBounds(0, 0, 20, 20);        // 设置图片的位置,左、上、右、下        textView.setCompoundDrawables(null, null, drawable, null);

当然,我们还可以用自定义View来实现这个效果,代码也是非常的简单

import android.content.Context;import android.content.res.TypedArray;import android.graphics.drawable.Drawable;import android.support.annotation.Nullable;import android.util.AttributeSet;import com.rzj.zhongshi.R;public class DrawableTextView extends android.support.v7.widget.AppCompatTextView {    private Drawable drawableLeft = null, drawableTop = null, drawableRight = null,     drawableBottom = null;    private int drawableWidth, drawableHeight;    public DrawableTextView(Context context) {        this(context, null);    }    public DrawableTextView(Context context, @Nullable AttributeSet attrs) {        this(context, attrs, 0);    }    public DrawableTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.DrawableTextView);        int count = typedArray.getIndexCount();        for(int i = 0; i < count; i++){            int attr = typedArray.getIndex(i);            switch (attr){                case R.styleable.DrawableTextView_drawableRight:                    drawableRight = typedArray.getDrawable(attr);                    break;                case R.styleable.DrawableTextView_drawableLeft:                    drawableLeft = typedArray.getDrawable(attr);                    break;                case R.styleable.DrawableTextView_drawableTop:                    drawableTop = typedArray.getDrawable(attr);                    break;                case R.styleable.DrawableTextView_drawableBottom:                    drawableBottom = typedArray.getDrawable(attr);                    break;                case R.styleable.DrawableTextView_drawableWidth:                    drawableWidth = typedArray.getDimensionPixelSize(attr, 0);                    break;                case R.styleable.DrawableTextView_drawableHeight:                    drawableHeight = typedArray.getDimensionPixelSize(attr,0);                    break;            }        }        if(null != drawableLeft){            drawableLeft.setBounds(0,0, drawableWidth, drawableHeight);        }        if(null != drawableRight){            drawableRight.setBounds(0,0, drawableWidth, drawableHeight);        }        if(null != drawableTop){            drawableTop.setBounds(0,0, drawableWidth, drawableHeight);        }        if(null != drawableBottom){            drawableBottom.setBounds(0,0, drawableWidth, drawableHeight);        }        setCompoundDrawables(drawableLeft, drawableTop, drawableRight, drawableBottom);    }}

转载地址:http://aowlo.baihongyu.com/

你可能感兴趣的文章
MySQL的Buffered and Unbuffered queries
查看>>
devstack安装
查看>>
利用 entry/onpremise 搭建一个 Sentry 异常汇总工具
查看>>
【跃迁之路】【513天】刻意练习系列272(2018.07.03)
查看>>
【刷算法】二叉搜索树与双向链表
查看>>
实战PHP数据结构基础之单链表
查看>>
函数化组件
查看>>
二叉树
查看>>
Go微服务 - 第一部分 - 介绍及理论基础
查看>>
语义图像分割概览
查看>>
React 教程第十五篇 —— 项目应用
查看>>
关于js类型转换骚操作
查看>>
JS代码复用模式
查看>>
Node.js 教程第七篇——Express 基础应用
查看>>
如何优雅的设计PHP异常
查看>>
JavaScript的String
查看>>
记录Homestead安装过程中的坑
查看>>
【基础】JavaScript类型判断
查看>>
learning javascript - 数组
查看>>
猫头鹰的深夜翻译:软件设计原则--更健壮的代码
查看>>