我有一个带有列表的 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(使用前将#替换为@)