【发布时间】:2020-02-18 16:56:26
【问题描述】:
我在任务运行时无法显示覆盖的内容。我做了一个非常简单的 Xamarin.Forms 共享项目来重现问题(此时我只在 Android 模拟器中运行它)。我在页面中有 2 个主要元素:StackLayout 和 Button(显示覆盖)和 ContentView 和另一个 Button(隐藏覆盖):
OverlayPage.xaml:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="OverlayTest.Pages.OverlayPage">
<AbsoluteLayout>
<StackLayout AbsoluteLayout.LayoutBounds="0, 0, 1, 1" AbsoluteLayout.LayoutFlags="All">
<Button x:Name="showOverlayButton" Text="Show overlay" Clicked="ShowOverlayButtonClicked"/>
</StackLayout>
<ContentView x:Name="overlay" AbsoluteLayout.LayoutBounds="0, 0, 1, 1" AbsoluteLayout.LayoutFlags="All"
IsVisible="False" BackgroundColor="#C0808080" Padding="10, 0">
<Button x:Name="hideOverlayButton" Text="Hide overlay" Clicked="HideOverlayButtonClicked"/>
</ContentView>
</AbsoluteLayout>
</ContentPage>
OverlayPage.xaml.cs:
using System;
using Xamarin.Forms;
namespace OverlayTest.Pages
{
public partial class OverlayPage : ContentPage
{
public OverlayPage()
{
InitializeComponent();
}
private void ShowOverlayButtonClicked(object sender, EventArgs e)
{
this.overlay.IsVisible = true;
}
private void HideOverlayButtonClicked(object sender, EventArgs e)
{
this.overlay.IsVisible = false;
}
}
}
App.cs:
using OverlayTest.Pages;
using Xamarin.Forms;
namespace OverlayTest
{
public class App : Application
{
public App()
{
// The root page of your application
this.MainPage = new NavigationPage(new OverlayPage());
}
}
}
当我运行应用程序时,当我点击showOverlayButton 时,会显示灰色层,但它的内容(hideOverlayButton 按钮)不可见。如果我将 xaml 设置 overlay 的 IsVisible 属性更改为 True:
<ContentView x:Name="overlay" AbsoluteLayout.LayoutBounds="0, 0, 1, 1" AbsoluteLayout.LayoutFlags="All"
IsVisible="True" BackgroundColor="#C0808080" Padding="10, 0">
然后我运行应用程序,然后我可以看到带有 hideOverlayButton 大按钮的灰色层。在这种情况下,我可以隐藏叠加层,然后再次显示,然后隐藏、显示、隐藏...
看来ContentView的内容必须在一开始就可见...我该如何解决这个问题?
【问题讨论】:
标签: xamarin.forms