【Android】.9图的一个BUG?
2015-11-25 16:54
651 查看
【问题】
本想通过使用 .9 图来取代被拉伸的png图,但是却遇到了问题:
在 java 代码中通过控制 ImageView/ImageButton 的背景和前景时,出现了很意外的结果---前景消失了;
【效果图】
目录结构
主要代码
得到了不想要的结果
想要的最终效果是
【分析】
经过一番查找和了解,知道了原因:
其中:我设置的ImageView属性:layout_height 和 layout_width 为固定值(48dp,80dp),padding 为 14dp ;引入的图片大小:48x48px ;
查找结果是:
前景并不是消失不见,而是已经不在可见范围内(我在上面设置了固定值,如果设置为 wrap_content 或者 match_parent 运行后发现前景还在);
【解决办法】
先保留 padding 的值,当绘制完 .9 图的背景后,重新设置 padding 值
【参考资料】
《 setBackgroundResource 9 patch 图会影响 LinearLayout 的 Padding》
《Where'd padding go, when setting background Drawable?》
本想通过使用 .9 图来取代被拉伸的png图,但是却遇到了问题:
在 java 代码中通过控制 ImageView/ImageButton 的背景和前景时,出现了很意外的结果---前景消失了;
【效果图】
目录结构
主要代码
得到了不想要的结果
想要的最终效果是
【分析】
经过一番查找和了解,知道了原因:
其中:我设置的ImageView属性:layout_height 和 layout_width 为固定值(48dp,80dp),padding 为 14dp ;引入的图片大小:48x48px ;
查找结果是:
在代码中设置 .9 图会重置 padding;
前景并不是消失不见,而是已经不在可见范围内(我在上面设置了固定值,如果设置为 wrap_content 或者 match_parent 运行后发现前景还在);
【解决办法】
先保留 padding 的值,当绘制完 .9 图的背景后,重新设置 padding 值
private void setBgAndImage(ImageView v, int bg, int image) {
int pL = v.getPaddingLeft();
int pR = v.getPaddingRight();
int pT = v.getPaddingTop();
int pB = v.getPaddingBottom();
v.setBackgroundResource(bg);
v.setPadding(pL, pT, pR, pB);
v.setImageResource(image);
}
【参考资料】
《 setBackgroundResource 9 patch 图会影响 LinearLayout 的 Padding》
http://blog.csdn.net/id19870510/article/details/40425267
《Where'd padding go, when setting background Drawable?》
http://stackoverflow.com/questions/10095196/whered-padding-go-when-setting-background-drawable
相关文章推荐
- android自定义权限
- Android Studio创建Android Library发布至本地仓库
- Android开发sdk的相关问题
- android 开发官网打不开
- android:json解析的两个工具:Gson和Jackson的使用小例子
- AndroidIO编程
- android中xml tools属性详解
- Android 获取内外置存储卡方法
- android发现之旅之ViewRootImpl,Activity,Window,DecorView之间的关系
- Android动画之属性动画(二)
- android编译分析之9—dumpvar.mk
- setVisibility()设置过度动画
- Android超简易侧滑菜单的实现
- android动画总结
- 做android爽到爆的东西,一般人我不告诉他
- Android学习——Animation动画效果
- Android View的second layout pass
- Android SQLite数据库
- ViewStub类延迟加载
- Shader 之 BitmapShader