Я хочу сделать Changebounds()
анимацию из одного набора ограничений в другой.
Обычно я делаю это, создавая два набора ограничений:
private val originalState = ConstraintSet().apply {
clone(context, R.layout.layout_meta_syntactic)
}
private val expandedState = ConstraintSet().apply {
clone(context, R.layout.layout_meta_syntactic)
// Change some constraints
connect(
R.id.button, ConstraintSet.END,
R.id.foo_text, ConstraintSet.START
)
}
И анимируя взад и вперед с помощью:
TransitionManager.beginDelayedTransition(id_of_my_component_in_fragment, transition)
originalState.applyTo(id_of_my_component_in_fragment)
Но теперь я застрял с тегом <merge>
в макете, из которого я хочу клонировать.Макет слияния является базой для составного компонента, который расширяет ConstraintLayout.
Составной компонент:
class MyCompoundView : ConstraintLayout {
// Omissions
inflate(context, R.layout.layout_meta_syntactic, this)
накачивание:
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/some_id"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
// Views
При попытке клонировать макет внабор ограничений программно получаю:
Caused by: android.view.InflateException: Binary XML file line #2: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
Caused by: android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
Как мне создать наборы ограничений из такого макета?