首页 > 解决方案 > Xamarin Android 中的可切换保存按钮

问题描述

我创建了一个布局,其中列出了RecyclerView. 我想为用户添加保存某个对象的选项,但我不知道如何实现类似下面的布局。我需要一个可以切换的按钮,如果用户单击它,它将用红色填充心形按钮,否则它将为空。谢谢你。

布局

在此处输入图像描述

标签: c#androidxamarinbuttonxamarin.android

解决方案


如果您希望使用某种动画从无到有充实,我建议您查看 SkiaSharp ( https://blog.xamarin.com/deep-dive-skiasharp-xamarin-forms/ ),然后使用动画类 ( https://xamarinhelp.com/custom-animations-in-xamarin-forms/ ) 为填充高度设置动画。

简而言之,您必须创建一个自定义视图,在其中添加一个 SKCanvasView:

<skia:SKCanvasView x:Name="PrimaryCanvas" PaintSurface="OnPaintSurface" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"/>

在 view.xaml.cs 中添加一个新函数

OnPaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e) { ... }

在这个函数内部,你需要编写一些代码来绘制你的心。我建议你先画一个轮廓,然后再画一个应该填满的内部。您可能想要添加一个可绑定属性,该属性保存要填充的金额的值,可能是百分比。使用此属性计算 OnPaintSurface 代码中内部零件的高度。

最后,当您希望图标填满时,您创建一个动画,然后更改之前创建的属性:

new Animation((value) =>
{
    FillHeightProperty = value;
    PrimaryCanvas.InvalidateSurface();
}).Commit(this, "fillAnimation", length: 350, repeat: () => false);

请注意,您需要使 PrimaryCanvas 表面无效。这将导致再次调用 OnPaintSurface,这将使用您更改的属性,因此在重绘画布时增加填充的高度。


推荐阅读