c# - Xamarin Forms 框架阴影设计

标签 c# xaml xamarin.forms

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

enter image description here

根据我发现的框架可以完成的内容。我有这段代码:

<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;
        }
    }
}

结果是这样的:

enter image description here

这看起来更像是一个边界而不是这张牌的悬浮效果。 上面的示例实际上使用了相同的 cardview 控件,没有任何样式(甚至没有 OutlineColor)。我是否错过了必须配置的选项?或者我怎样才能获得与示例中相同的结果?

Xamarin.Forms 版本:2.5.0.280555

最佳答案

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

我已将属性 ShadowRadius 添加到 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,我的卡片显示出漂亮的高程阴影。

关于c# - Xamarin Forms 框架阴影设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49110579/

相关文章:

c# - WPF问题: Need to draw a control on top of another

ios - iOS 11.1.2 上的 Xamarin.Forms : Webview loads a bigger font

android - Xamarin:检索项目 CardView 的父级时出错

xamarin - 在 C# 后端中,如何选择分段控件中的元素?

c# - 导入多格式分隔文件

c# - 在运行时创建具有新匿名类型的 lambda 表达式

c# - Entity Framework 6 迁移是否可以包含围绕脚本的事务?

c# - 如何在 xaml 中创建 ListView 项

wpf - 一个 View 可以有两个 View 模型作为它的数据上下文吗?

c# - 在任务取消时处理 CancellationTokenSource 的代码是否正确?