【发布时间】:2018-03-16 18:10:39
【问题描述】:
我正在尝试学习自定义视图。为了我创建了一个扩展 CardView 的名为 EditTextCarded 的类。
在init 方法中,我已经初始化了一个 EditText 并为其分配了布局参数。
覆盖 onMeasure 方法并声明视图大小后,
然后通过运行我的customView,屏幕上只出现了卡片视图,而EditText在CardView中不存在或不可见。发生了什么,我的textView在哪里?
class EditTextCarded @JvmOverloads
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int = 0) : CardView(context, attrs, defStyleAttr) {
init {
var editText = EditText(context)
editText.layoutParams = LayoutParams(LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT))
editText.hint = "Test"
addView(editText)
}
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
....
}
}
我的 XML 布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#eee"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.groot.edittext_carded.MainActivity">
<com.example.groot.edittext_carded.EditTextCarded
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_margin="10dp"/>
【问题讨论】: