如何在Xamarin形式的android和ios中的状态栏下方添加阴影?

时间:2018-12-14 14:44:11

标签: android xamarin xamarin.forms xamarin.ios xamarin.android

我正在以xamarin形式使用MasterDetailPage。我想要的是,当用户打开母版页时,状态栏和母版详细信息页之间应该显示一些阴影。看起来母版页在状态栏下方,并且那里显示一些阴影。

如何设置状态栏和主详细信息页面的主页面。

enter image description here

1 个答案:

答案 0 :(得分:1)

对于iOS,您可以拥有CustomRenderer:

using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using UIKit;
using ShadowNavBarSample.iOS;
using CoreGraphics;

[assembly: ExportRenderer(typeof(NavigationPage), typeof(ShadowNavigationBarRenderer))]
namespace ShadowNavBarSample.iOS
{
    public class ShadowNavigationBarRenderer : NavigationRenderer
    {
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            if (this.Element == null) return;

            NavigationBar.Layer.ShadowColor = UIColor.Gray.CGColor;
            NavigationBar.Layer.ShadowOffset = new CGSize(0, 0);
            NavigationBar.Layer.ShadowOpacity = 1;
        }
    }
}

对于Android,您也需要首先创建一个文件actionbar_shadow.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:height="4dp" />

   <gradient android:startColor="@android:color/transparent"
              android:endColor="#88333333"
              android:angle="90"/>
</shape>

然后编辑您的styles.xml

         

<style name="MyTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowNoTitle">true</item>
    <item name="colorPrimary">#2196F3</item>
    <item name="colorPrimaryDark">#1976D2</item>
    <item name="colorAccent">#FF4081</item>   

    <item name="android:elevation">4dp</item>
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item>
</style>