Xamarin Dim Page(Master Detail Page)

问题描述 投票:2回答:2

因此,对于Android,当显示主 - 细节页面的母版页时,母版页被“黑暗暗淡”视图覆盖,因此很容易用眼睛区分这两个页面。在iOS中,详细信息页面不会变暗,因此区分视图会更加困难。有没有办法用“黑色半透明”的BoxView或Frame覆盖详细信息页面,因此它以类似于Android的方式使页面变暗。我尝试了很多不同颜色和不透明度的盒子视图,但它们都完全覆盖了屏幕,你无法“透视它们”。有任何想法吗?或更好的解决方案即使它是BoxView的客户渲染器也能工作。我只需要颜色的想法/设置,让它透视。

xaml xamarin xamarin.ios xamarin.forms master-detail
2个回答
4
投票

样品在这里:https://github.com/jgold6/XamarinSupportSamples/tree/master/XForms-TestShadingiOSDetailPage

以下是链接破坏时的代码:

MasterDetailPage mdPage;
Color origContentBgColor;
Color origPageBgColor;

public App()
    {
        mdPage = new MasterDetailPage();
        mdPage.IsPresentedChanged += async (object sender, EventArgs e) => {
            if (Device.OS == TargetPlatform.iOS) {
                if (mdPage.IsPresented) {
                    var currentPage = (DetailPage)((NavigationPage)mdPage.Detail).CurrentPage;
                    origPageBgColor = currentPage.BackgroundColor;
                    origContentBgColor = currentPage.Content.BackgroundColor;

                    currentPage.BackgroundColor = Color.Black;
                    currentPage.Content.FadeTo(0.5);
                    if (currentPage.Content.BackgroundColor == Color.Default) {
                        currentPage.Content.BackgroundColor = Color.White;

                    }
                }
                else {
                    var currentPage = (DetailPage)((NavigationPage)mdPage.Detail).CurrentPage;
                    currentPage.BackgroundColor = origPageBgColor;
                    currentPage.Content.BackgroundColor = origContentBgColor;
                    currentPage.Content.FadeTo(1.0);
                }


            }
        };
        mdPage.Master = new MasterPage(){Title = "Master Page"};
        mdPage.Detail = new NavigationPage( new DetailPage());

        // The root page of your application
        MainPage = mdPage;
    }

-1
投票

我只是将FadeTo()方法的顺序改为最后一个命令,暗黑效果消失了!

await currentPage.Content.FadeTo(0.5);
© www.soinside.com 2019 - 2024. All rights reserved.