解决某些Rom中EditText无法修改光标的问题

发现、探索、总结


简介

本篇博客主要讲如何解决某些romEditText 光标无法修改的问题。


现象

我们大都遇到过这种情况,由于为了保证App整体的一致性,Ui 有时候会让你修改某些光标的显示颜色,你或许会说这有什么难的?一句代码搞定,代码如下:

app:textCursorDrawable="@drawable/xx"

结果你运行在模拟器上,喜滋滋的看着自己的成果,但是后面测试仍然找到了你,说你仍没有修改,这时候的你一脸懵逼。你要去找测试理论,测试拿出了他的华为手机 …,你或许会感叹,这很华为…

对于某些国产rom ,类似华为、小米、魅族它们对系统源码进行了修改,某些情况下会导致系统的api无效,但经过实践发现,修改光标最终修改的只是mCursorDrawableRes对应的值,即使在国产rom也是如此,所以有了后面的解决办法。


解决办法

通过上面的现象和实践我们知道只需要能够修改mCursorDrawableRes对应的值就可以保证兼容这些系统,如何去修改呢?

具体思路如下: 利用反射获取对应的成员变量,然后将自己需要传入的值进行设置

具体步骤:

  1. 继承EditText

  2. 声明自定义的属性,用于接收自定义的值

  3. 利用反射将用户定义的值进行设置


简单方式

你或许会说我难不成还要自己去自定义吗?而且感觉每次都这样写好麻烦啊! 好吧,程序员怎么可以这么low,使用下面的方式即可轻松上车… 滴滴.

  • 导入该库

Step 1. Add it in your root build.gradle at the end of repositories:

    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

Step 2. Add the dependency

dependencies {
            compile 'com.github.guohaiyang1992:GeneralEditText:0.2'
    }
  • 使用该库的控件com.ghy.ui.GeneralEditText

  • 使用app:textCursorDrawable="@drawable/xx"

如果你想看具体的实现,请跳转至github


总结

至此已经完成了修改光标的学习。遇到问题多思考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值