最近在android上搞一个带描边效果的TextView,网上搜索了下都是采用两个TextView在一个layout中进行实现,但细想了下,如果我在一个TextView中让其以不同的方式进行两次描绘不就能够达到效果了吗?由于网上没有看到和我类似的方法,故发出来和大家分享,由于只需要重写protected void onDraw(Canvas canvas);方法即可,故只附上onDraw的实现:
private boolean m_bDrawSideLine = false; // 默认不采用描边
/* (non-Javadoc)
* @see android.widget.TextView#onDraw(android.graphics.Canvas)
*/
@Override
protected void onDraw(Canvas canvas) {
if (m_bDrawSideLine) {
// 描外层
//super.setTextColor(Color.BLUE); // 不能直接这么设,如此会导致递归
setTextColorUseReflection(Color.BLUE);
m_TextPaint.setStrokeWidth(3); // 描边宽度
m_TextPaint.setStyle(Style.FILL_AND_STROKE); //描边种类
m_TextPaint.setFakeBoldText(true); // 外层text采用粗体
m_TextPaint.setShadowLayer(1,