[Android自定义View] - 被忽视的细节点总结

本文总结了在Android自定义View时容易被忽视的问题,特别是关于TextView的使用。作者分享了如何通过继承TextView实现圆角背景和边框效果,并针对绘制边框时出现的不全、不圆滑及线条断开问题提出了解决方案,即在设置矩形边框时增加2.5f的偏移量。
摘要由CSDN通过智能技术生成

简介

有些时候,当我们自定义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);
    
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值