setBackgroundResource导致Padding失效,settextsize

通过setBackground设置9 patch图的时候会重置padding。这个时候需要在setBackground之前调用getPadding方法获取未重置之前的padding,然后在调用setBackground之后用代码重新设置Padding。

/**
* 代码中设置background后会导致padding失效
* @param rl
*/
private void setRlPadding(RelativeLayout rl) {
int top = rl.getPaddingTop();
int bottom = rl.getPaddingBottom();
int left = rl.getPaddingLeft();
int right = rl.getPaddingRight();
rl.setBackgroundResource(R.drawable.hive_journey_bg);
rl.setPadding(left,top,right,bottom);
}

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

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

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

这个方法拿到的尺寸其实就是系统转换好的,如果我们在配置文件中是这样写的
<dimen name="hive_textsize_1">16sp</dimen>
。那么通过getResources方法得到的大小就是根据屏幕密度换算后的,所以要想字体显示正常就必须设置size的类型是px。当然如果们定义的单位是px,这里自然就不会转换。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值