Я реализовал привязку данных в моем проекте. У меня есть определенный экран с двумя вложенными макетами в тегах включения. Я не мог изменить видимость включаемых макетов, используя привязку данных программно.
Тем не менее, я добился этого с помощью логического значения, но мой вопрос заключается в том, как программно установить видимость для этого тега включения.
Мой xml:
<include
android:id="@+id/reg_email"
layout="@layout/custom_email"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<include
android:id="@+id/reg_phone"
layout="@layout/custom_phone"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
А в Activity: когда я пытаюсь установить это - он становится красным, что означает, что он не воспринимается как вид.
dataBinding.regPhone.setVisibility(View.GONE);
dataBinding.regEmail.setVisibility(View.VISIBLE);
2 ответа
Добавить получить root на ваш взгляд
dataBinding.regPhone.getRoot().setVisibility(View.GONE);
dataBinding.regEmail.getRoot().setVisibility(View.VISIBLE);
Лучший способ.
На верхнем макете объявите логическое или наблюдаемое поле, значение которого переключает видимость включенного макета. Затем не забудьте дать включенному макету id
, иначе он не будет работать
<?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">
<data>
<import type="android.view.View"/>
<variable
name="show"
type="Boolean" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="@color/colorPrimary">
<include layout="@layout/progress"
android:id="@+id/progress"
android:visibility="@{show?View.VISIBLE:View.GONE}"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].