Xamarin Dim 页面(主从页面)
Xamarin Dim Page (Master Detail Page)
因此对于 Android,当主从页面的母版页显示时,母版页被 "black dim" 视图覆盖,因此很容易用眼睛区分这两个页面。在 iOS 中,详细信息页面未变暗,因此更难区分视图。有没有办法用 "black translucent" 的 BoxView 或 Frame 覆盖详细信息页面,以便它以类似于 Android 的方式使页面变暗。我已经尝试了许多不同颜色和不透明度的框视图,但它们都完全覆盖了屏幕,你不能 "see through them"。有任何想法吗?或者更好的解决方案?即使它是可以工作的 BoxView 的客户渲染器。我只需要颜色 ideas/settings 让它看透。
此处示例:
https://github.com/jgold6/XamarinSupportSamples/tree/master/XForms-TestShadingiOSDetailPage
这里是代码以防 link 中断:
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;
}
我只是把FadeTo()
方法的顺序改成了最后一个命令,深黑色的效果就没有了!
await currentPage.Content.FadeTo(0.5);
因此对于 Android,当主从页面的母版页显示时,母版页被 "black dim" 视图覆盖,因此很容易用眼睛区分这两个页面。在 iOS 中,详细信息页面未变暗,因此更难区分视图。有没有办法用 "black translucent" 的 BoxView 或 Frame 覆盖详细信息页面,以便它以类似于 Android 的方式使页面变暗。我已经尝试了许多不同颜色和不透明度的框视图,但它们都完全覆盖了屏幕,你不能 "see through them"。有任何想法吗?或者更好的解决方案?即使它是可以工作的 BoxView 的客户渲染器。我只需要颜色 ideas/settings 让它看透。
此处示例: https://github.com/jgold6/XamarinSupportSamples/tree/master/XForms-TestShadingiOSDetailPage
这里是代码以防 link 中断:
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;
}
我只是把FadeTo()
方法的顺序改成了最后一个命令,深黑色的效果就没有了!
await currentPage.Content.FadeTo(0.5);