Drawable的setBounds方法有四个参数,setBounds(int left, int top, int right, int bottom),这个四参数指的是drawable将在被绘制在canvas的哪个矩形区域内。

例如

@Overrideprotected void onDraw(Canvas canvas) {drawable.setBounds(100, 100, 500, 500);drawable.draw(canvas);}
  • 1
  • 2
  • 3
  • 4
  • 5

上面的代码会将drawable绘制在canvas内部(100,100,500,500)表示的矩形区内(这个矩形区域的坐标是以canvas左上角为坐标原点的)

更换radiobutton中的图片在xml中很好设置,但对于初学者如何在代码中设置还是不容易找的。没法子,通过看原版api找到两个方法,setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds。

下面交给大家方法。

第一个方法:setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom)

api原文为:

Sets the Drawables (if any) to appear to the left of, above, to the right of, and below the text. Use null if you do not want a Drawable there. The Drawables' bounds will be set to their intrinsic bounds.

意思大概就是:可以在上、下、左、右设置图标,如果不想在某个地方显示,则设置为null。图标的宽高将会设置为固有宽高,既自动通过getIntrinsicWidth和getIntrinsicHeight获取。——笔者翻译

1                 button = (RadioButton) group.getChildAt(i);
2                 Resources res = TabTest.this.getResources();
3                 Drawable myImage = res.getDrawable(R.drawable.home);
4                 button.setCompoundDrawablesWithIntrinsicBounds(null, myImage, null, null);

如图第一个按钮:

  

第二种方法:setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)

api原文为:

Sets the Drawables (if any) to appear to the left of, above, to the right of, and below the text. Use null if you do not want a Drawable there. The Drawables must already have had setBounds(Rect) called.

意思大概就是:可以在上、下、左、右设置图标,如果不想在某个地方显示,则设置为null。但是Drawable必须已经setBounds(Rect)。意思是你要添加的资源必须已经设置过初始位置、宽和高等信息。——笔者翻译

这下就明白了,这个方法要先给Drawable设置setBounds(x,y,width,height);

x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度 height:组件的高度。

如代码:

1                 Resources res = TabTest.this.getResources();
2                 Drawable myImage = res.getDrawable(R.drawable.home);
3                 myImage.setBounds(1, 1, 100, 100);
4                 button.setCompoundDrawables(null, myImage, null, null);

只要调整好宽和高。效果也是一样的。这个方法的好处就是不按比例,宽高可以打破原有的大小及比例!如图,我调的y轴有点不对齐。

总结:radiobutton设置不同方位的图标的方法有以上两种,如果想手动设置大小的话就要用setCompoundDrawables,事先要给Drawable设置setBounds。

如果按照原有比例大小显示图片就使用setCompoundDrawablesWithIntrinsicBounds

TextView的setBounds()方法相关推荐

  1. android 超链接事件,Android实现捕获TextView超链接的方法

    本文实例讲述了Android实现捕获TextView超链接的方法.分享给大家供大家参考,具体如下: 这里分享一篇捕获TextView超链接的文章,希望对大家有所帮助,我终于在歪路上回归正途了.这个捕获 ...

  2. android TextView 的setTextSize方法的使用

    今天,简单讲讲android的TextView 的setTextSize方法的使用. 之前,我看代码时发现了这个函数,于是在网上查询了这个函数的用法,发现之前自己了解的不够全面,所以这里记录一下. 看 ...

  3. Android中TextView的SetText()方法注意事项

    忙活了一个下午才研究出来的.... 学习Android的Intent时候跟着Mars老师做简单的乘法程序,在第一个activity输入两个正整数,通过一个intent跳转到第二个intent,在第二个 ...

  4. Android里面的settext作用,Android性能优化-TextView的setText方法会导致界面重绘?

    问题现象 大概就是我们在自定义一个视频组件的ui时,发现了一段异常的效果. 我简述一下: 视频的控制器 底部一般都是 显示时间(textview)和进度条(seekbar)的 一般要实现这个效果 都是 ...

  5. android settext里面的参数,Android中TextView的SetText()方法注意事项

    忙活了一个下午才研究出来的.... 学习Android的Intent时候跟着Mars老师做简单的乘法程序,在第一个activity输入两个正整数,通过一个intent跳转到第二个intent,在第二个 ...

  6. setleft android,android TextView的setCompoundDrawables()方法

    这个方法可以在TextView的四周加上一个Drawable图标.对于只知道TextView显示文字的,是不是很高大上. setCompoundDrawables(Drawable left, Dra ...

  7. Android TextView设置透明度方法的注意点

    TextView 设置字体透明度 一般自己都是在颜色值前面添加多少透明度即可, 不如设置字体颜色的透明度为50% android:textColor="#50D81B60" 这里 ...

  8. android中oncreate方法,Android textView 中 onCreate 方法的改变

    我在main.xml上使用 Layout Editor创建了一个textview名称是textView1. 我想使用一个自定义的字体,所以我在onCreate方法中创建了下面的代码,但是好像不能识别t ...

  9. Android TextView里直接显示图片的三种方法

    方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系.一般如果字体是在图片上重叠的推荐这样写.时间关系,这个不付源码了. 方法二:利用Text ...

  10. android textview 添加图片大小,Android_Android中使用TextView实现图文混排的方法,向TextView或EditText中添加图像比 - phpStudy...

    Android中使用TextView实现图文混排的方法 向TextView或EditText中添加图像比直接添加文本复杂一点点,需要用到标签. 只有一个src属性,该属性原则上应该指向一个图像地址或可 ...

最新文章

  1. ERP与EWM集成配置---ERP 端(一)
  2. Git之diff和status
  3. Java中线程池,你真的会用吗?
  4. 25条div+CSS编程提醒及小技巧整理
  5. mysql publishedtime_MySQL数据库中的Date,DateTime,TimeStamp和Time类型
  6. VM虚拟机安装centos详细图文教程
  7. css3之 谜灯卡片_纯css3灯泡开关特效代码
  8. 详解MES系统在钢铁企业的应用分析
  9. 使用vue实现的人物关系图谱
  10. 开关电源Buck电路CCM及DCM工作模式
  11. day 21 C# 窗体绘制一个正方体
  12. 通过物理地址查计算机,别人知道我查电脑的物理地址,怎么处理
  13. 高德地图大头针功能_绘制点标记-在地图上绘制-开发指南-iOS 地图SDK | 高德地图API...
  14. 虚拟机没关电脑直接关机了,重启后crt、xshell都连不上虚拟机
  15. maven的依赖下载不下来,解决的几种方法(包括手动下载导入)
  16. vscode的下载、安装
  17. Git 工作中怎么用?
  18. Kafka(9)副本(leader、flower、isr说明)
  19. Flask上下文管理源码--亲自解析一下
  20. H5获取用户所在城市 网页获取用户城市名称

热门文章

  1. c语言测试你的性格,著名人格测试:五张图看出你的性格
  2. 80psi等于多少kpa_kpa与psi的换算(kpa与psi对照表)
  3. python批量ppt转图片,pdf转图片,word转图片脚本
  4. 手机端,跟pc 链接qq 客服
  5. 论灾备之重要性:七场无法预见的数据中心灾难
  6. Android源码编译过程及刷机过程详解
  7. 参考牛顿冷却定律优化最热问题的排序
  8. 基于51单片机的555定时器测电容proteus仿真
  9. 360度评估前HR必须掌握的优劣势
  10. DDPG本质:将策略网络和价值网络分开 || 经验池作用、目标网络作用、DDQN简介