这是我的浮动动作按钮:
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_add_retailer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:tint="@android:color/white"
app:backgroundTint="@color/colorPrimary"
app:srcCompat="@drawable/ic_add_black_24dp"
local:MvxBind="Visibility IsAddButtonVisible, Converter=Visibility" />
它的可见性属性通过 MvvmCross 绑定到 IsAddButtonVisible:
private bool _isAddButtonVisible = true;
public bool IsAddButtonVisible
{
get
{
return _isAddButtonVisible;
}
set
{
_isAddButtonVisible = value;
RaisePropertyChanged(() => IsAddButtonVisible);
}
}
当我更改布尔值时
ViewModel.IsAddButtonVisible = false;
。什么也没发生。我在这里做错了什么?提前感谢!
编辑:当我使用可见绑定时,切换有效
local:MvxBind="Visible IsAddButtonVisible"
但现在我在浮动动作按钮上看不到任何隐藏/显示动画......
您必须使用自定义绑定才能使用方法调用而不是Visibility
ViewStates
更改。
创建目标绑定,该绑定基于绑定到的 bool 值处理执行 show 和 hide 方法调用。
public class FloatingActionButtonAnimateVisibleTargetBinding
: MvxAndroidTargetBinding
{
protected FloatingActionButton View => (FloatingActionButton)Target;
public FloatingActionButtonAnimateVisibleTargetBinding(FloatingActionButton target)
: base(target)
{
}
public override Type TargetType => typeof(bool);
protected override void SetValueImpl(object target, object value)
{
var isVisible = value.ConvertToBoolean();
var floatingActionButton = target as FloatingActionButton;
if (isVisible)
floatingActionButton.Show();
else
floatingActionButton.Hide();
}
}
在平台Setup.cs
中注册自定义绑定
protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
base.FillTargetFactories(registry);
registry.RegisterCustomBindingFactory<FloatingActionButton>(
"VisibleAnim",
button => new FloatingActionButtonAnimateVisibleTargetBinding(button));
}
然后,您应该能够在 XML 中使用绑定
local:MvxBind="VisibleAnim IsAddButtonVisible"