Khe*_*raj 7 checkbox android android-layout android-databinding
我想根据 CheckBox 选中状态设置视图可见性。就像我们在preference.xml 中所做的那样。
目前我正在做
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
>
<data>
<import type="android.view.View"/>
<variable
name="isScheduleChecked"
type="java.lang.Boolean"/>
<variable
name="activity"
type="com.amelio.ui.activities.ActivityCart"/>
</data>
<LinearLayout
style="@style/llDefault"
android:layout_height="match_parent"
android:orientation="vertical"
>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onCheckedChanged="@{()-> isScheduleChecked}"
android:text="Checkbox"/>
<LinearLayout
style="@style/llDefault"
android:padding="@dimen/space_small"
android:visibility="@{isScheduleChecked ? View.VISIBLE : View.GONE, default = gone}"
>
</LinearLayout>
</LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
这不起作用。我认为android:onCheckedChanged="@{()-> isScheduleChecked}"这条线不起作用。我在做什么错?有些人告诉我实现它的最佳方法。
目前,我正在通过我在 Java 代码中的活动更改 isScheduleChecked,binding.setIsScheduleChecked(true/false);但我不会为了设置可见性而在 Java 类中编写代码。
这是一个很酷的主意!我通过将您的onCheckedChanged线路替换为以下内容来使其工作:
android:checked="@={isScheduleChecked}"
Run Code Online (Sandbox Code Playgroud)
可以参考数据绑定中的id。无需采用另一个变量。
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Checkbox"/>
<LinearLayout
style="@style/llDefault"
android:padding="@dimen/space_small"
android:visibility="@{checkbox.isChecked() ? View.VISIBLE : View.GONE, default = gone}"
>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
camelCase. 就像 idcheck_box那么你会使用checkBox.isChecked().您必须View在布局中导入才能使用它View.VISIBLE
<data>
<import type="android.view.View"/>
</data>
Run Code Online (Sandbox Code Playgroud)如果您有任何其他问题,那么您可以发表评论。