setBackgroundResource导致Padding失效,settextsize


通过setBackground设置9 patch图的时候会重置padding。这个时候需要在setBackground之前调用getPadding方法获取未重置之前的padding,然后在调用setBackground之后用代码重新设置Padding。
Java代码   收藏代码
  1. private void setRlPadding(RelativeLayout rl) {  
  2.     int top = rl.getPaddingTop();  
  3.     int bottom = rl.getPaddingBottom();  
  4.     int left = rl.getPaddingLeft();  
  5.     int right = rl.getPaddingRight();  
  6.     rl.setBackgroundResource(R.drawable.hive_journey_bg);  
  7.     rl.setPadding(left,top,right,bottom);  
  8. }  

只有在背景图是.9的时候会出现这种情况,其他时候并没有遇到。 

伦理片 http://www.dotdy.com/

还有一个小细节在这里顺便记录一下,很多同学发现通过TextView的setTextSize方法设置的字体大小总是跟自己想的不一样。原因是settextSize的单位默认是dp,这个时候最先想到的做法就是直接setTextSize(10)这样写死,可是这样对与整个应用通用字体的配置造成麻烦,如果有天要改字体大小,这个textview很容易就漏掉。所以我们想把这个字体的size也放到配置文件里面,于是我们就要调用这个方法
Java代码   收藏代码
  1. titleTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.hive_textsize_1));  

这个方法的第一个参数是规定这个size的类型,如dp或者px。关键在于第二个参数,通过
Java代码   收藏代码
  1. getResources().getDimension(R.dimen.hive_textsize_1)  

这个方法拿到的尺寸其实就是系统转换好的,如果我们在配置文件中是这样写的
Java代码   收藏代码
  1. <dimen name="hive_textsize_1">16sp</dimen>  
。那么通过getResources方法得到的大小就是根据屏幕密度换算后的,所以要想字体显示正常就必须设置size的类型是px。当然如果们定义的单位是px,这里自然就不会转换。
  影音先锋电影 http://www.iskdy .com/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值