Android开发经验谈Android技术知识

以后再也不用怕特殊字符的显示问题了!

2019-10-12  本文已影响0人  ifjgm

以后再也不用怕特殊字符的显示问题了!

概述

这虽然是一个非常小的功能,但是你不知道的时候真的是头疼的不行。你能和产品说对不起我做不出来,直接用汉字吧!咱们可是有追求的程序猿!!那么看到这,恭喜你,你就保住了自己的尊严。文末有彩蛋,大大的彩蛋!!

福利镇楼

image

EditText 设置单位

这里以在EditText 和 InputLayout 中显示平方米为例,进行说明。

    /**
     *添加单位
     * */
    private fun addUnit(til: EditText, title: String) {
        val spannableStringBuilder = SpannableStringBuilder(title)
        spannableStringBuilder.append(squareMeter())
        til.hint = squareMeter()
    }


    /**
     *制造单位 ㎡
     * */
    private fun squareMeter(): SpannableString {
        val m2 = SpannableString("m2")
        m2.setSpan(RelativeSizeSpan(0.5f), 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)//一半大小
        m2.setSpan(SuperscriptSpan(), 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        return m2

    }

InputLayout 设置 ㎡

上面的方法,设置EditText 的单位时可以的,但 InputLayout 更为特殊。具体原因没有去研究。应该是样式传输过程中丢失了。那怎么办呢?我也是头疼了很久。感觉找不到好办法。难道去研究InputLayout的源码?为了这么一个没什么大用的小功能??好像得不偿失吧!

最简单的完美解决解决方案

直接复制 ㎡ 到你需要用的地方,就可以完美解决了。是不是很惊喜?哈哈!当然如果你需要立方米 ,拿去 m³,其他自己去找吧!

最原理,最高大上的解决方案

Android 是支持 Unicode编码 的。那么 你猜到了吗?对的就是使用 Unicode编码。可参考Android中 汉字使用Unicode编码格式表示
比如 元/\u33A5元/m³.
知道你肯定会问,在哪里找到Unicode,也贴心的给你送来了,点我

总结

Unicode编码 治标治本,标本兼治。不会乱码,不存在哪个控件生效哪个控件不生效,最合时宜!

上一篇下一篇

猜你喜欢

热点阅读