带图片的TextView

在Android开发中,为了减少布局层次并提高性能,可以使用drawableTop(), drawableBottom(), drawableLeft(), drawableRight()方法将图片直接添加到TextView中,以此替代ImageView和LinearLayout的组合。通过设置drawablePadding调整图片与文字间距,并通过setBounds方法定制图片尺寸。" 76099422,3245859,LeetCode解题:组合总数(Combination Sum),"['算法', '递归', '组合问题']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

带图片的TextView:

在实际开发中,可能会遇到如下的需求:


要实现这种效果,一般的想法是:一个ImageView用于显示图片+一个TextView用于显示文字,

然后把它们丢进同一个LinearLayout中,接着依次创建四个这样的LinearLayout,再另外放到一个大的LinearLayout中即可实现效果。

但考虑到布局层次越少,性能越好,因此使用drawableXXX就可以省掉以上过程,直接设置四个TextView就可以完成需求。

 

基本用法:

设置四个方向上的图片:

drawableTop(),drawableButtom(),drawableLeft(),drawableRight()。除此之外,还可以使用drawablePadding来设置图片与文字之间的距离。


 

实现代码:

<TextView

android:id="@+id/textView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:drawableTop="@drawable/head_image"

android:drawableLeft="@drawable/head_image"

android:drawableRight="@drawable/head_image"

android:drawableBottom="@drawable/head_image"

android:padding="10dp"

android:text="头像"/>

 

MainActivity.java:
 

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

 

textView=(TextView)findViewById(R.id.textView);

//获得四个不同方向上的图片资源,数组元素依次是:左上右下

Drawable[]drawables=textView.getCompoundDrawables();

//数组下表0-3,依次是:左上右下

drawables[0].setBounds(0,0,100,100);

drawables[1].setBounds(0,0,100,100);

drawables[2].setBounds(0,0,100,100);

drawables[3].setBounds(0,0,100,100);

textView.setCompoundDrawables(drawables[0],drawables[1],drawables[2],

drawables[3]);

}

 

代码分析:
drawables[1].setBounds(0,0,100,100)

调用setBounds设置左上右下坐标点,比如这里设置了代表的是:

长:是从离文字最左边开始0dp处到100dp处,

宽:是从文字上方0dp处到往上延伸100dp处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值