给Android按钮添加图标

之前的项目好不容易搞定,现在boss让我帮忙做另外一个项目App的界面美化,我瞬间傻眼。我之前没接触过Android,怎么整?BOSS说要给按钮上添加图标,好不容易搭建好环境,打开项目,要添加图标的时候傻眼了,因为Android的按钮添加图标不像Swing那样传个参数进去就可以了,尽管就个ImageButton类,但是这个类指定了图片之后就显示图片了,也就是说,他是将图片作为一个按钮来显示的。但是我的这个是文字和图标都需要的。那怎么加呢?

第一次上网查的时候,查到的结果说要自己重新写一个按钮的类。要是这样的话那工程量就太巨大了。后来灵机一动,想到因为Android界面是靠XML配置的,XML也支持HTML的语法,那我用background行不行呢?上网再次查询,发现果然有这个属性。于是我兴致勃勃的找到这个属性的用法之后添加上去,顿时傻眼。因为他把图片整个作为按钮的背景来显示,有图片直接被拉伸了不说,文字覆盖在图片上根本看不了。css里面可以通过截取的方式改变图片显示的区域和位置,但是这个配置文件里面显然不可能写CSS。我又上网找了半天,结果没发现类似的配置属性。看来这条路还是走不通。

终于在我一筹莫展的时候,偶然发现按钮类(Button)有另外一个属性的:

android:drawableTop="@drawbale/iconid"
android:drawableBottom="@drawbale/iconid"
android:drawableLeft="@drawbale/iconid"
android:drawableRight="@drawbale/iconid"

这四个属性分别是在按钮的上下左右添加图标。只要将图标放在项目的Drawable目录下R文件就自动在drawable类里生成这个图标名的ID。比如放一张image.jpg的图标进去,要在按钮的左边显示,那么只需要给这个按钮添加属性

adnroid:drawableLeft="@drawable/image"

就可以了。但是需要注意的是:图标的名字只能小写+数字([a-z][0-9]),不能使用其他字符,连英文大写都不行。这点有点郁闷。不知道是什么原因。因为还有其他事情要做,所以我没有深究。

加上上面那行代码之后,图标就可以在按钮上显示出来了。但是等等,还没完。如果按钮比较长而文字内容比较少的话,会出现图标在按钮最左边而文字在中间的情况,图标和文字之间有很大的空白。这个时候有两种方法处理:第一种就是改变按钮的长度。将按钮的width设置为wrap_content。如果为了美观不能改变按钮的长度的话,我经过研究,发现设置按钮的padding也可以。设置了padding之后,图标也会随之往反方向移动。如:

android:paddingLeft="50sp"
这个属性是左边的内边距为50sp,熟悉CSS的人不难理解这个属性。这样图标就会像右移动50sp的距离了。(关于sp、dp、px的区别请自行在网上搜索)
只要设置合适的数值,按钮就能比较完美的显示出来了。之所以是“比较”完美,因为我发现如果按钮的width属性为fill_parent的话,那第二个方式还是无法在各个分辨率上完美显示。最好还是给按钮的width设置为wrap_content或者设置一个具体的宽度,第二种方法才比较好用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值