通过setInputType()设置其输入类型后,自定义EditText无法正常工作

mez*_*iga 10 android android-custom-view android-edittext android-inputtype

我创建了一个自定义EditText,并onDraw()重写了它的功能.一切都工作正常(我可以在EditText中绘制任何内容),直到我想为此更改输入方法EditText并调用此函数:

setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
Run Code Online (Sandbox Code Playgroud)

无论我何时何地调用它:在调用它之后,我的自定义EditText消失,只显示原始EditText,虽然我的重写onDraw()函数,并且在其中,或者调用它的超级函数(无论我在哪里调用它) .

我也曾尝试用透明色扮演一些帖子这里建议: setBackgroundColor(Color.TRANSPARENT)在基类,也是 paint.setColor(0x80FF0000)Paint的目标onDraw()函数,但他们都没有效果.

编辑:我发现问题不在于设置输入类型,而是同时设置输入类型和重力EditText:

setGravity(Gravity.CENTER_HORIZONTAL);
Run Code Online (Sandbox Code Playgroud)

如果未设置其中任何一个,我的自定义视图将按预期绘制.(还有更奇怪的是):Gravity.CENTER_VERTICAL没有问题,只有Gravity.CENTER_HORIZONTALGravity.CENTER.

看起来这两个设置是互斥的.这有可能吗?

sim*_*dam 5

检查你的getScrollX()价值观.我打赌你会看到1000000像素的值.EditText以这种奇怪的方式翻译它的画布,所以尽管你实际上正在绘制它,但它远离可见的剪辑.

要解决此问题,只需将scrollX值添加到绘图坐标即可.


H3c*_*H3c 0

您必须在 xml 中设置 android:digits="0123456789"。但我不知道为什么......