我有一个带有列表的 Xamarin 内容页面。对于 ListItems,我想要类似于 Android 中的 cardview 的东西。
根据我发现的框架可以完成的内容。我有这段代码:
<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
作为要在堆栈 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/