Когда у меня есть макет, который включает в себя пользовательский вид, как я могу получить содержимое своего пользовательского вида, которое будет отображаться в окне предварительного просмотра в Android Studio?
У меня есть пользовательский вид, основанный на LinearLayout:
class MyCustomView:LinearLayout {
constructor(context:Context?):super(context)
constructor(context:Context?, attrs:AttributeSet?):super(context, attrs) {
initialize(context, attrs)
}
constructor(context:Context?, attrs:AttributeSet?, defStyleAttr:Int):super(context, attrs, defStyleAttr) {
initialize(context, attrs)
}
constructor(context:Context?, attrs:AttributeSet?, defStyleAttr:Int, defStyleRes:Int):super(context, attrs, defStyleAttr, defStyleRes) {
initialize(context, attrs)
}
fun initialize(context:Context?, attrs:AttributeSet?) {
LayoutInflater.from(context).inflate(R.layout.my_custom_view_layout, this)
}
}
Он раздувает макет, корнем которого является тег <merge/>
:
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:parentTag="LinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/message_display"
android:text="hello world"
/>
</merge>
Я включаю видкак элемент в моем основном файле макета:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_before"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="before"/>
<com.my.app.MyCustomView
android:id="@+id/custom_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_after"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="before"/>
</LinearLayout>
Когда я просматриваю свой основной макет в окне предварительного просмотра, содержимое моего пользовательского представления не отображается. Я хотел бы видеть мой пользовательский вид, включая TextField "Hello World". Как мне этого добиться?