我想创建一个包装器元素,该元素可以在整个应用程序中重复使用,因为它是每个屏幕的基础。 该包装器应该可以添加到Android Studio中的布局编辑器,并且需要能够容纳在编辑器中插入的所有内部元素。 但是这些元素必须插入到带有图片的标头下的布局内,并且只能插入在包装XML布局(innerContainer)中定义的指定区域内。
这是包装器的布局:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
...
android:background="@drawable/frame_container_layout"
tools:context=...>
<include
android:id="@+id/cv_header"
layout="@layout/cv_header"
...>
</include>
<android.support.constraint.ConstraintLayout
android:id="@+id/innerContainer"
.../>
</android.support.constraint.ConstraintLayout>
我需要的是在自定义视图中以某种方式使用此布局,即在某处使用该元素时,这些元素只会插入到 innerContainer 中。
子XML:
<...custom_views.WrapperFragmentView
...
app:exampleColor="#33b5e5"
app:exampleDimension="24sp"
app:exampleDrawable="@android:drawable/ic_menu_add"
app:exampleString="Hello, WrapperFragmentView">
<TextView
android:id="@+id/textView1"
...
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</...custom_views.WrapperFragmentView>
现在将孩子插入到包装器布局上,这是我不想要的。它不在innerContainer内部。
在我定义的kotlin文件中
class WrapperFragmentView : android.support.constraint.ConstraintLayout {
...
private fun init(attrs: AttributeSet?, defStyle: Int) {
var inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.cv_wrapper_fragment, this, true)
findViewById<android.support.constraint.ConstraintLayout>(R.id.innerContainer)
innerContainer是我想要作为将要使用它的子级的根元素的视图。不是整个布局cv_wrapper_fragment。
如何在WrapperFragmentView中设置它?
或者,如果整个概念是错误的,并且有一种更简单的方法来处理可重复使用的包装元素,那么我就是这样。