1. 摘要:
论坛上遇到个小伙伴求助,“如何防止Android的TextView背景图片被拉伸”。搜到了一篇博客《Android TextView里直接显示图片的三种方法》[1]。方法一:重写TextView的onDraw方法;方法二:利用TextView支持部分Html的特性,直接用api赋图片;方法三:用ImageSpan和SpannableString。美中不足的是,并未给出方法一的具体实现。为了方便其它人遇到同样问题时,可以更容易解决。本文将给出方法一:重写TextView的onDraw方法的具体实现。
2. 效果:
为了实现该效果,写了一个简单的自定义控件AfxTextView。所有的控件layout_height均为wrap_content。
第一行为AfxTextView+background+layout_width:wrap_content+paddingLeft;
第二行为AfxTextView+background+layout_width:wrap_content;
第三行为AfxTextView+background+layout_width:wrap_content+paddingRight;
第四行为TextView+layout_width:wrap_content+paddingLeft;
第五行为TextView+layout_width:wrap_content;
第六行为TextView+layout_width:wrap_content+paddingRight;
第七行为TextView+background+layout_width:wrap_content;
第八行为AfxTextView+background+layout_width:match_parent+paddingLeft;
第九行为AfxTextView+background+layout_width:match_parent;
第十行为AfxTextView+background+layout_width:match_parent+paddingRight;
第十一行为TextView+layout_width:match_parent+paddingLeft;
第十二行为TextView+layout_width:match_parent;
第十三行为TextView+layout_width:match_parent+paddingRight;
3 代码:
AfxTextView继承自TextView,重写了onMeasure()和onDraw()方法。为了方便学习和讨论,已把代码上传到 github: https://github.com/afunx/AfxTextView