Пользовательский вид упаковки в Android с использованием XML-макетов - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу создать элемент-обертку, который можно многократно использовать во всем приложении, потому что это основа каждого экрана.Эта обертка должна быть добавлена ​​в редактор макетов в Android Studio и должна содержать любые внутренние элементы, вставленные в редактор.Но эти элементы должны быть вставлены внутри макета под заголовком с изображением и только внутри указанной области, определенной в макете XML-оболочки (innerContainer).

enter image description here

Это макет оболочки:

<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 - это представление, которое я хочу иметь в качестве корневого элемента для дочерних элементов, которые собираются его использовать.Не все макетвсе для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...