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. "hive_textsize_1">16sp  
。那么通过getResources方法得到的大小就是根据屏幕密度换算后的,所以要想字体显示正常就必须设置size的类型是px。当然如果们定义的单位是px,这里自然就不会转换。
  影音先锋电影 http://www.iskdy .com/


你可能感兴趣的:(setBackgroundResource导致Padding失效,settextsize)