简介
有些时候,当我们自定义View时,写好代码,总有那么一些地方会出现问题,而且有些问题可能就是一行代码的事情,但是通过百度,google却很难搜索到我们想要的答案,积累遇到的问题,再遇到时能够快速解决。
征集
如果你也有相同的经历,希望你能在评论区留言,大家互相学习,讨论,谢谢
TextView系列
-
继承TextView实现绘制圆角背景,边框等效果
有些时候,我们需要不同圆角背景的TextView文本,带边框的文本,如果通过写xml文件,你会发现既繁琐又会新建很多xml文件,所以可以通过继承TextView来优化这一过程。问 题 : \color{red}{问题:} 问题:发现在绘制边框的时候,文本边框会出现绘制不全,圆角也不圆滑,线条也会出现断开的感觉,或者线条特别细。
解 决 方 案 : \color{red}{解决方案:} 解决方案:绘制边框的时候加上2.5的偏移,至于为什么,自己可以去查看TextView的源码关键代码
mRectF.set(2.5f, 2.5f, getWidth() - 2.5f, getHeight() - 2.5f);@Override protected void onDraw(Canvas canvas) { mRectF.set(2.5f, 2.5f, getWidth() - 2.5f, getHeight() - 2.5f); if (mIsDrawRadius) { mPaint.reset(); mPaint.setFlags(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(mBgColor); mPaint.setStyle(Style.FILL); canvas.drawRoundRect(mRectF, mRadius, mRadius, mPaint); } if (mIsDrawStroke) { mPaint.reset(); mPaint.setFlags(Paint.ANTI_ALIAS_FLAG); mPaint.setStrokeWidth(mStrokeWidth); mPaint.setColor(mStrokeColor); mPaint.setStyle(Style.STROKE); canvas.drawRoundRect(mRectF, mRadius, mRadius, mPaint); } super.onDraw(canvas); }