【发布时间】:2021-10-30 12:19:30
【问题描述】:
我想在 TextView 和 EditText 的文本值下方绘制形状 Rectangles、Circle、Paths、Triangles。所以我重写了 onDraw() 方法并在将背景颜色设置为绿色后通过绘制简单的蓝色矩形对其进行了测试。我知道我不应该在 onDraw() 方法中初始化对象(Paint 对象),但它仅用于测试。以下是完整代码:
class Test : AppCompatEditText {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
override fun onDraw(canvas: Canvas) {
setBackgroundColor(Color.GREEN)
canvas.drawRect(0f, 0f, 150f, 50f, Paint().apply {
isAntiAlias = true
color = Color.BLUE
style = Paint.Style.FILL
})
super.onDraw(canvas)
}
}
然后用xml初始化
<com.slaviboy.galaxy.Test
android:id="@+id/ssss"
android:layout_width="150dp"
android:layout_height="50dp"
android:gravity="center"
android:text="TEST"
android:imeOptions="actionDone"
android:inputType="number"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
这是最终结果
上次我使用了类似的代码,我记得它特别适用于EditText!
- 我正在使用 GLSurfaceView 在所有视图下方绘制一个 OpenGL 场景,所以我认为这是导致它的原因,所以我删除了它,但问题仍然存在。
- 然后我将类型从 EditText 更改为简单的View,它开始按预期工作。所以它表明这是我使用 EditText 和 TextView 时才引起的问题。
- 所以我开始从 xml 初始化中删除属性,特别是属性 inputType
所以一旦我删除了 inputType 属性,代码就开始按预期工作,
android:inputType="number"
知道为什么视图会丢失所有绘图吗? 是否有解决方法?
我知道我可以使用属性digits限制允许的字母,但是有没有办法将键盘样式保持为数字?
android:digits="0123456789."
【问题讨论】:
标签: java android kotlin android-edittext