我目前正在Visual中使用Mvvm.cross框架和Xamarin进行一个项目。这是我的问题。
我有两个自定义复选框:
checkbox_approve:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/approved" />
<item android:state_checked="false"
android:drawable="@drawable/circle_unchecked" />
</selector>checkbox_reject:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/rejected" />
<item android:state_checked="false"
android:drawable="@drawable/circle_unchecked" />
</selector>这里是ReportResponseView.axml 文件中的代码:
<dc.AlphaRelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
local:MvxBind="Click ApprovedCommand"> *//this is binding to ViewModel for different purposes*
<CheckBox
android:id="@+id/approvedCheckBox"
android:button="@drawable/checkbox_approve"
android:clickable="false"
local:MvxBind="Checked IsApproved" /> *//this is binding to ViewModel for different purposes*
</dc.AlphaRelativeLayout>
<dc.AlphaRelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
local:MvxBind="Click RejectedCommand">
<CheckBox
android:id="@+id/rejectedCheckBox"
android:button="@drawable/checkbox_reject"
android:clickable="false"
local:MvxBind="Checked IsRejected" />
</dc.AlphaRelativeLayout>我想要的是:如果用户单击1复选框,第二个复选框将是不可点击的。以下是ReportResponseView.cs: 中的代码
protected override void InitView(View view)
{
approveCheckBox = (CheckBox)view.FindViewById(Resource.Id.approvedCheckBox);
rejectCheckBox = (CheckBox)view.FindViewById(Resource.Id.rejectedCheckBox);
approveCheckBox.CheckedChange += (s, e) =>
{
if (approveCheckBox.Checked)
{
rejectCheckBox.Clickable = false;
}
else
{
rejectCheckBox.Clickable = true;
}
};
rejectCheckBox.CheckedChange += (s, e) =>
{
if (rejectCheckBox.Checked)
{
approveCheckBox.Clickable = false;
}
else
{
approveCheckBox.Clickable = true;
}
};
}approveCheckBox.Clickable在某种程度上不适用于这两个复选框。当我点击1复选框时,第二个复选框仍然可以点击。我想知道我是不是做错了什么?
发布于 2019-01-30 04:20:41
问题是我在2 AlphaRelativeLayout上有click event,它覆盖了2个复选框,总是允许用户单击AlphaRelativeLayout,然后使2个复选框明显可点击。
这里是解决方案:我在ViewModel中稍微调整了2种方法ApprovedCommand和RejectedCommand,然后只需要将Click事件从AlphaRelativeLayout移到Checkbox属性
<dc.AlphaRelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/approvedCheckBox"
android:button="@drawable/checkbox_approve"
android:clickable="false"
local:MvxBind="Click ApprovedCommand" />
</dc.AlphaRelativeLayout>
<dc.AlphaRelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/rejectedCheckBox"
android:button="@drawable/checkbox_reject"
android:clickable="false"
local:MvxBind="Click RejectedCommand" />
</dc.AlphaRelativeLayout>发布于 2019-01-21 10:45:29
可以使用已启用的false属性来防止单击。
protected override void InitView(View view)
{
approveCheckBox =
(CheckBox)view.FindViewById(Resource.Id.approvedCheckBox);
rejectCheckBox =
(CheckBox)view.FindViewById(Resource.Id.rejectedCheckBox);
approveCheckBox.CheckedChange += (s, e) =>
{
if (approveCheckBox.Checked)
{
rejectCheckBox.Enabled = false;
}
else
{
rejectCheckBox.Enabled = true;
}
};
rejectCheckBox.CheckedChange += (s, e) =>
{
if (rejectCheckBox.Checked)
{
approveCheckBox.Enabled = false;
}
else
{
approveCheckBox.Enabled = true;
}
};
}https://stackoverflow.com/questions/54285577
复制相似问题