Android 自定义 TextView 实现高度和宽度,解决字体适配问题
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
专注于 Android/Unity 和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
👉即将学会
利用 TextView 的 onTextChanged 方法来实现宽度高度自适应的控件,目前只适用于单行。
👉背景
🙈小空:出现的原因是项目需要的设备广(涉及到手机/平板/大电视/无数的定制设备)。如果是知名的品牌还好,关键客户还是一些乱七八糟的品牌,无数尺寸造成的屏幕密度。
🙎小芝:你说气人不气人。我都炸了。
🙈小空(叹气):关键又没给更多的适配开始时间。这就很伤人了,如果使用资源文件 values 适配的话,那烧香都怕香不够,甚至引发一连串的事故。
🙎小芝(疑问):所以呢?有解决办法吗!
🙈小空:那当然,虽然是取巧的形式,但好歹解决了问题。最开始的时候也是没有思路,在 GitHub 上搜索了半天,终于找到了类似的开源:AutoFitTextView,截止 2021-8-2 拥有 800 多 Star。其他也搜索到了不少,但是并不满足解决需求。
🙎小芝(很开心):哇,感谢开源。
👉实践过程
目前适应的范围:TextView 无宽高限制;无其他限制; 不过项目中使用的权重布局,可根据情况调整!实现的结果:在下方图的控件上回自动填充满,控件大,字体大,控件小,字体小!
程序:注释解释很全
在布局中使用的话,注意按照你最大的设备来设置字体大小,这样在小设备上回自动缩放
试验后就会发现,真的很神奇;
有根据高度,就有根据宽度的自动适配,这个是网上的,同时 github 上也大多是这种效果;上个简单的代码
主要的区别在于:TextPaint 的方法:measureText(text) descent ascent!
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://www.infoq.cn/profile/DB2492B85795C4/publish
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
版权声明: 本文为 InfoQ 作者【芝麻粒儿】的原创文章。
原文链接:【http://xie.infoq.cn/article/1c9196e0ee4d3680a686eec81】。文章转载请联系作者。
评论