您的位置:首页 > 移动开发 > Android开发

【Android】.9图的一个BUG?

2015-11-25 16:54 651 查看
【问题】

本想通过使用 .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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: