Xamarin形成框架阴影设计

时间:2018-03-05 12:30:49

标签: 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

2 个答案:

答案 0 :(得分:2)

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

我已向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上显示出很好的高度阴影。

答案 1 :(得分:0)

你可以试试这个

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