我有一个带有列表的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
作为卡片显示在堆栈视图中)。不幸的是,我不能共享确切的代码,因为不是我拥有它,而是我的老板,但是我可以告诉您如何实现。
我添加了一个属性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中显示了一个不错的高程阴影。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句