通过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设置一个新的背景资源时,SDK中存在一个已知的bug,可能导致padding值被忽视或重置。这个问题可能会影响到各种类型的View,如TextView、Button、ImageView等。 要理解这个问题,首先需要了解...
img1.setBackgroundResource(R.drawable.a1); advPics.add(img1); ImageView img2 = new ImageView(this); img2.setBackgroundResource(R.drawable.a2); advPics.add(img2); ImageView img3 = new...
android:padding="16dp" android:background="@android:color/white"> android:id="@+id/toast_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp...
在Java编程领域,开发小游戏是学习和提升技能的好方法,特别是对于初学者而言。"打地鼠"是一款经典的街机游戏,它具有简单的规则和快速的反应要求,非常适合转化为编程练习。在这里,我们将深入探讨如何使用Java来...
android:padding="8dp" <!-- 内边距 --> /> ``` 在上述代码中,`@drawable/button_background`引用了一个自定义的背景资源,通常是一个9-patch图像,以确保按钮在不同尺寸的屏幕上正确拉伸。你也可以设置纯色背景...
4. `<padding>`:定义内边距,用于在形状内部留出一定的空白区域,例如`<padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp"/>`。 创建一个shape资源文件,如`dialog_...
若要在代码中修改,可以使用`button.setBackgroundResource()`, `button.setTextColor()`, `button.setTextSize()`等方法。 7. **整合使用** 在实际项目中,可以结合Handler、Message Queue和AsyncTask来处理复杂...
unselectedTabView.setBackgroundResource(R.drawable.unselected_tab_background); // 未选中时的背景 } } } }); ``` 在这个例子中,当用户切换tab时,当前选中的tab会设置为`selected_tab_background`,而...
在Java代码中,我们也可以通过`Button`对象的`setBackgroundResource()`方法来设置按钮的背景图片: ```java Button button = findViewById(R.id.button_with_image); button.setBackgroundResource(R.drawable...
下面是安卓开发仿微信界面的代码。 分为3步,第一步是界面的编写,第二步是导航界面,第三步是右上角菜单栏。 开始第一步前先预览一下效果。 第一步,界面。 界面的思路是利用ViewPager+Fragment实现,所以...
android:padding="10dp" /> ``` 通过以上步骤,我们就实现了ListView数据项的隔行换色效果。这个功能虽然简单,但在实际应用中却能显著提升用户体验。在开发过程中,我们还可以根据需要扩展此功能,例如添加渐变...
editText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); ``` 3. **设置背景**: 要设置EditText的背景,可以使用`setBackgroundColor(int color)`来设置纯色背景,或者使用`setBackgroundResource(int resid)`...
saveView.setBackgroundResource(R.color.nocolor); currentPlayMusicNum=0; } else{ if(saveView!=null) saveView.setBackgroundResource(R.color.nocolor); view....
通过设置`android:background`属性或者在代码中调用`setBackgroundColor()`或`setBackgroundResource()`方法,可以实现背景的个性化定制。 2. **文字位置的自由调整**: 一个关键特性是能够自由调整文字在图片上的...
android:padding="10dp" android:text=""/> 如何切换展开和折叠//初始化操作 expand.initExpand(false ,mHeight); //设置动画时间 expand.setAnimationDuration(300); //折叠或者展开操作后的监听 expand....
setBackgroundResource(defaultResId); } @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { setBackgroundResource(focusedResId); } else { setBackgroundResource...
注意,频繁地更改视图的背景可能会导致性能问题。为了提高效率,可以在convertView复用时检查并调整背景颜色,而不是每次都创建新的背景。 7. **使用第三方库** 对于更高级的自定义需求,还可以考虑使用第三方库...
<padding android:bottom="10dip" android:left="10dip" android:right="10dip" android:top="10dip" /> ``` 此外,当用户按下返回键时,我们还需要取消倒计时,以免影响其他操作。在`onBackPressed()`方法中...