扩展EditText的视图会丢失样式,并且不可聚焦

我尝试使用kotlin为方便的原因(NumberEdit)继承EditText,但渲染后的View失去了大部分的EditText属性。 外观是一个TextView的,它不是用鼠标(在模拟器中)可以聚焦的。 当我点击活动时,我可以编辑第一个NumberEdit小部件,并可以使用Tab键循环到下一个小部件。

我添加了两个模拟器截图来说明不同之处。

一个EditText看起来像这样

一个EditText看起来像这样

新的NumberEdit看起来像这样

新的NumberEdit看起来像这样

扩展类看起来像这样:

import android.content.Context import android.text.InputType import android.util.AttributeSet import android.widget.EditText class EditNumber(context: Context, attributeSet: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : EditText(context, attributeSet, defStyleAttr, defStyleRes) { constructor(context: Context) : this(context, null, 0, 0) constructor(context: Context, attributeSet: AttributeSet?) : this(context, attributeSet, 0, 0) constructor(context: Context, attributeSet: AttributeSet?, defStyleAttr: Int) : this(context, attributeSet, defStyleAttr, 0) init { inputType = InputType.TYPE_CLASS_NUMBER + InputType.TYPE_NUMBER_FLAG_DECIMAL } } 

有没有人有线索我做错了? 我是否必须明确引用某些属性?

我不是一个kotlin专家,但如果你看看编辑文本的java源代码,你有以下几点:

 public class EditText extends TextView { public EditText(Context context) { this(context, null); } public EditText(Context context, AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.editTextStyle); } public EditText(Context context, AttributeSet attrs, int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } public EditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } 

它看起来不像你传递正确的参数给构造函数…你通过了很多0和空值…