Xamarin Forms 框架阴影设计

2024-05-11

我有一个带有列表的 Xamarin 内容页面。对于 ListItems,我想要类似于 Android 中的卡片视图的东西。

根据我发现可以通过框架来完成。我有这个代码:

<ViewCell>
    <StackLayout Padding="8" >
        <controls:CardView HasShadow="True" OutlineColor="LightGray">
            <StackLayout Orientation="Vertical" Padding="5">
                // Some labels and Buttons                
            </StackLayout>
        </Frame>
    </StackLayout>
</ViewCell>

CardView有以下代码:

public class CardView : Frame
{
    public CardView()
    {
        Padding = 0;
        if (Device.RuntimePlatform == Device.iOS)
        {
            HasShadow = false;
            OutlineColor = Color.Transparent;
            BackgroundColor = Color.Transparent;
        }
    }
}

这会导致类似这样的结果:

这看起来更像是边框,而不是卡片悬浮效果。 上面的示例实际上使用相同的cardview控件,没有任何样式(即使没有OutlineColor)。我是否错过了必须配置的选项?或者我怎样才能达到与示例中相同的结果?

Xamarin.Forms 版本:2.5.0.280555


我已经实现了一些非常相似的东西(也Frame作为要在堆栈视图中显示的卡片)。不幸的是,我无法分享确切的代码,因为它不是我拥有的,而是我的雇主拥有的,但我可以告诉你如何实现这一点。

我添加了一个属性ShadowRadius to CardView并创建了一个自定义渲染器,源自Xamarin.Forms.Platform.Android.AppCompat.FrameRenderer。在渲染器中我设置Elevation渲染器的

protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
{
    /* ... */

    this.Elevation = ((CardView)e.NewElement).ShadowRadius;
}

我的卡片使用 Xamarin.Forms 2.5.0.280555 显示出漂亮的高程阴影。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin Forms 框架阴影设计 的相关文章

随机推荐