Прежде всего у меня есть глубокий поиск, и я не нашел связанных топи c или решения: (
Я создал проект библиотеки и импортировал его как библиотеку в другой проект, эта библиотека во всех своих представлениях использует Android dataBinding, мне нужно переопределить xml представление или его часть (скажем, включить) в моем проекте следующим образом:
product_details_quantity_layout. xml в библиотеке
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_quantity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dim_product_details_sc_quantity_view_mrgn_top"
android:layout_marginBottom="@dimen/dim_product_details_sc_quantity_view_mrgn_bottom"
android:background="@drawable/product_quantity_bg"
android:gravity="center"
android:layoutDirection="ltr"
android:paddingStart="@dimen/dim_product_details_sc_quantity_view_padding_start"
android:paddingTop="@dimen/dim_product_details_sc_quantity_view_padding_top"
android:paddingEnd="@dimen/dim_product_details_sc_quantity_view_padding_start"
android:paddingBottom="@dimen/dim_product_details_sc_quantity_view_padding_bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.42">
<ImageView
android:id="@+id/iv_decrement"
multipleClick="@{true}"
android:layout_width="0dp"
android:layout_height="0dp"
android:onClick="@{decreaseBtnClick}"
android:src="@drawable/ic_minus"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1.4"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.15" />
<ImageView
android:id="@+id/iv_increment"
multipleClick="@{true}"
android:layout_width="0dp"
android:layout_height="0dp"
android:onClick="@{increaseBtnClick}"
android:src="@drawable/ic_add"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1.4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.15" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@{productQty}"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_increment"
app:layout_constraintStart_toEndOf="@id/iv_decrement"
app:layout_constraintTop_toTopOf="parent"
tools:text="1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<data>
<import type="android.view.View" />
<variable
name="productQty"
type="String" />
<variable
name="increaseBtnClick"
type="android.view.View.OnClickListener" />
<variable
name="decreaseBtnClick"
type="android.view.View.OnClickListener" />
</data>
</layout>
И в моем проекте
product_details_quantity_layout. xml
<?xml version="1.0" encoding="utf-8"?>
<layout 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"
tools:context=".ui.view.product_details.ProductDetailsActivity"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_quantity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layoutDirection="ltr"
android:paddingStart="@dimen/dim_product_details_sc_quantity_view_padding_start"
android:paddingTop="@dimen/dim_product_details_sc_quantity_view_padding_top"
android:paddingEnd="@dimen/dim_product_details_sc_quantity_view_padding_start"
android:paddingBottom="@dimen/dim_product_details_sc_quantity_view_padding_bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.42">
<ImageView
android:id="@+id/iv_decrement"
multipleClick="@{true}"
android:layout_width="0dp"
android:layout_height="0dp"
android:onClick="@{decreaseBtnClick}"
android:src="@drawable/ic_minuse_circle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.23" />
<ImageView
android:id="@+id/iv_increment"
multipleClick="@{true}"
android:layout_width="0dp"
android:layout_height="0dp"
android:onClick="@{increaseBtnClick}"
android:src="@drawable/ic_add_circle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.23" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@{productQty}"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_increment"
app:layout_constraintStart_toEndOf="@id/iv_decrement"
app:layout_constraintTop_toTopOf="parent"
tools:text="1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<data >
<import type="android.view.View" />
<variable
name="productQty"
type="String" />
<variable
name="increaseBtnClick"
type="android.view.View.OnClickListener" />
<variable
name="decreaseBtnClick"
type="android.view.View.OnClickListener" />
</data>
</layout>
В этом я получил исключение приведения класса исключения, он может ' преобразовал сгенерированный класс привязки данных из дочернего в dataBinding в Parent, поэтому я обновил тег в файле xml моего проекта до
, после этого он работал нормально и раздувал новое представление, но при создании нового APK дает дублированную ошибку класса, найденную дважды в родительских и дочерних проектах
, поэтому дорогая любая помощь в этом случае будет высоко оценена.
Обновление
T Его тег «Включить» в полном файле xml в родительском файле
<include
android:id="@+id/cl_quantity"
layout="@layout/product_details_quantity_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:decreaseBtnClick="@{()->viewModel.onDecreaseQty()}"
app:increaseBtnClick="@{()->viewModel.onIncreaseQty()}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:productQty="@{String.valueOf(viewModel.productQty)}" />
Второе обновление Добавление импорта
<?xml version="1.0" encoding="utf-8"?>
<layout 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"
tools:context=".ui.view.product_details.ProductDetailsActivity"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_quantity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layoutDirection="ltr"
android:paddingStart="@dimen/dim_product_details_sc_quantity_view_padding_start"
android:paddingTop="@dimen/dim_product_details_sc_quantity_view_padding_top"
android:paddingEnd="@dimen/dim_product_details_sc_quantity_view_padding_start"
android:paddingBottom="@dimen/dim_product_details_sc_quantity_view_padding_bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.42">
<ImageView
android:id="@+id/iv_decrement"
multipleClick="@{true}"
android:layout_width="0dp"
android:layout_height="0dp"
android:onClick="@{decreaseBtnClick}"
android:src="@drawable/ic_minuse_circle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.23" />
<ImageView
android:id="@+id/iv_increment"
multipleClick="@{true}"
android:layout_width="0dp"
android:layout_height="0dp"
android:onClick="@{increaseBtnClick}"
android:src="@drawable/ic_add_circle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.23" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@{productQty}"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_increment"
app:layout_constraintStart_toEndOf="@id/iv_decrement"
app:layout_constraintTop_toTopOf="parent"
tools:text="1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<data >
<import type="***.databinding.ProductDetailsQuantityLayoutBinding"/>
<import type="android.view.View" />
<variable
name="productQty"
type="String" />
<variable
name="increaseBtnClick"
type="android.view.View.OnClickListener" />
<variable
name="decreaseBtnClick"
type="android.view.View.OnClickListener" />
</data>
</layout>