自定义EditText在通过setInputType()设置其inputtypes后无法工作

我创build了一个自定义的EditText ,并覆盖了onDraw()函数。 一切工作正常(我可以在EditText中绘制任何东西),直到我想改变这个EditText的input方法,并调用这个函数:

 setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); 

不pipe何时何地,我调用它后,我的自定义EditText消失,只显示原始的EditText ,虽然我重写的onDraw()函数,并在其中,其超级函数被调用(不pipe在哪里正是我援引它)。

我也尝试玩一些在这里的一些postbuild议透明的颜色: setBackgroundColor(Color.TRANSPARENT)在基类,也paint.setColor(0x80FF0000)在我的Paint对象onDraw()函数,但他们没有效果。

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

 setGravity(Gravity.CENTER_HORIZONTAL); 

如果它们中的任何一个没有设置,我的自定义视图按预期绘制。 另外(甚至更奇怪):与Gravity.CENTER_VERTICAL没有问题,只有Gravity.CENTER_HORIZONTALGravity.CENTER

看起来这两个设置是相互排斥的。 这可能吗?

Solutions Collecting From Web of "自定义EditText在通过setInputType()设置其inputtypes后无法工作"

检查您的getScrollX()值。 我敢打赌,你会看到像100万像素的值。 EditText以这种奇怪的方式翻译它的canvas,所以尽pipe你实际上正在绘制它,但它远离可见的剪辑。

要解决它只是将scrollX值添加到您的绘图坐标。

您必须在xml中设置android:digits =“0123456789”,但我不知道为什么…