通过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,这里自然就不会转换。
分享到:
相关推荐
这个使用编程语言来动态设置是可以做到的,例如使用View的setBackgroundResource、setTextSize、setTextColor等函数。但我们不可能在每个activity里对页面里的所有控件都通过调用这些函数来换肤,这样的程序代码难以...
img1.setBackgroundResource(R.drawable.a1); advPics.add(img1); ImageView img2 = new ImageView(this); img2.setBackgroundResource(R.drawable.a2); advPics.add(img2); ImageView img3 = new...
java经典小游戏源码下载,供java爱好者学习研究,打地鼠,雷霆战机,坦克大战,小精灵,推箱子等等。一起玩游戏,学习,回味童年。
下面是安卓开发仿微信界面的代码。 分为3步,第一步是界面的编写,第二步是导航界面,第三步是右上角菜单栏。 开始第一步前先预览一下效果。 第一步,界面。 界面的思路是利用ViewPager+Fragment实现,所以...
saveView.setBackgroundResource(R.color.nocolor); currentPlayMusicNum=0; } else{ if(saveView!=null) saveView.setBackgroundResource(R.color.nocolor); view....
android:padding="10dp" android:text=""/> 如何切换展开和折叠//初始化操作 expand.initExpand(false ,mHeight); //设置动画时间 expand.setAnimationDuration(300); //折叠或者展开操作后的监听 expand....
layout.setBackgroundResource(R.drawable.draw_gray_rectangle); layout.setPadding(pad, pad, pad, pad); // 当i的值为零时,递归结束 if (i != 0) { layout.addView(add(context, --i, pad,list)); ...
exv1.setBackgroundResource(R.anim.explosion); exa1 = (AnimationDrawable) exv1.getBackground(); fl.addView(exv1); fl.setOnTouchListener(new LayoutListener()); setContentView(fl); } class ...
mAnimView.setBackgroundResource(R.drawable.play_anim); AnimationDrawable anim = (AnimationDrawable) mAnimView.getBackground(); anim.start(); // 播放音频 MediaManager.playSound(mDatas.get...
loadingView.setBackgroundResource(R.drawable.lis); //获取“背景动画[帧动画]” AnimationDrawable drawable=(AnimationDrawable)loadingView.getBackground(); //播放动画 drawable.start();
setBackgroundResource(0) 可以移除 View 的背景色 Resources.getSystem().getDisplayMetrics().density 可以不用 Context 也能获取屏幕密度哦 通过重载 ViewGroup 的 dispatchDraw 可以实现一个简单的...
flash.setBackgroundResource(R.drawable.flashclose); state=1; } //当前是强制关闭,改变成强制打开 else if(state==1){ //打开闪光灯 parameters.setFlashMode(Parameters....
创建了ParallaxViewPager之后,可以使用下面的方法来设置背景,或者也可以xml设置:1) setBackgroundResource(int resid)2) setBackground(Drawable background) or setBackgroundDrawable(Drawable background)3) ...
方法1: 系统api实现 代码如下:Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic); //bitmap = Bitmap.createBitmap(100, 20, Config.ARGB_8888); BitmapDrawable drawable = new ...
viewHold.imagView.setBackgroundResource(image.image); viewHold.button.setText(image.button_title); viewHold.button.setOnClickListener(new OnClickListener() { @Override public void ...
新建一个newTabSpec(newTabSpec),设置其标签和图标(setIndicator),设置内容(setContent),设置TabHost的背景颜色,设置TabHost的背景图片资源,mTabHost.setBackgroundResource(R.drawable.bg0);设置当前显示哪一...
TvWidget是一个TV常用效果... border.setBackgroundResource(R.drawable.item_highlight); RelativeLayout main= (RelativeLayout) findViewById(R.id.main); border.attachTo(main); 标签:TvWidget
iv.setBackgroundResource(imgIds[position]);//设置ImageView的背景图片 iv.setScaleType(ImageView.ScaleType.CENTER_CROP); iv.setLayoutParams(new Gallery.LayoutParams(120, 120));//设置相框中元素的...
Android 带键盘打电话拨号应用...btn_num[i].setBackgroundResource(R.drawable.bg_alibuybutton); ViewGroup类onLayout设置控件位置大小. 少用XML文件创控件,用代码创建控件等. 希望编程Android初学者,爱好者有所帮助.
之前使用Glide的时候被ImageView的图片设置弄混了(很低级的问题,确是经常犯的问题),所以就去看了...mImageView.setBackgroundResource(); mImageView.setBackgroundColor(); mImageView.setBackgroundDrawable();