我有一页简单的黑色背景页。我想使它透明,以便下面的一页是可见的,但模糊的。
Someone建议:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:NameSpace"
x:Class="NameSpace.MainPage"
BackgroundColor="Transparent"> </ContentPage>Another one建议:
<StackLayout VerticalOptions="End" HorizontalOptions="FillAndExpand" BackgroundColor="#80000000" Opacity="0.5" HeightRequest="160" Grid.Row="2" >因此,两者都适用于平板电脑,但不适用于移动设备。有人能向我解释为什么和/或建议我如何解决它吗?提前感谢
发布于 2020-06-10 09:31:52
您可以使用AbsoluteLayout并设置“浮点”视图的透明度。
<AbsoluteLayout>
<!--below view-->
<StackLayout BackgroundColor="Red" AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Button Text="111111" />
</StackLayout>
<!--float view-->
<StackLayout BackgroundColor="Gray" Opacity="0.5" AbsoluteLayout.LayoutBounds="0.5,0,1,0.5" AbsoluteLayout.LayoutFlags="All" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
</StackLayout>
</AbsoluteLayout>更新
如果使用导航,就不可能实现它。因为仅仅设置页面的backgroundColor是不够的。在ContentPage中有呈现层。
作为解决办法,我们可以模拟一个导航(打开一个新页面)。
<AbsoluteLayout>
<!--below view-->
<StackLayout BackgroundColor="Red" AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Button Text="open new page" Clicked="Button_Clicked_1"/>
</StackLayout>
<!--float view-->
<StackLayout x:Name="FloatView" BackgroundColor="Gray" Opacity="0.5" AbsoluteLayout.LayoutBounds="1,1,0.01,1" AbsoluteLayout.LayoutFlags="All" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Label Text="this is a transparent view" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" />
<Button Text="Back" Clicked="Button_Clicked"/>
</StackLayout>
</AbsoluteLayout>private void Button_Clicked_1(object sender, EventArgs e)
{
//show
Device.BeginInvokeOnMainThread(async () =>
{
var xPosition = 0;
var currentPosition = 0.9;
while (currentPosition >xPosition)
{
await Task.Delay(1);
currentPosition -= 0.04;
AbsoluteLayout.SetLayoutBounds(FloatView, new Rectangle(currentPosition,0, 1, 1));
}
});
}
private void Button_Clicked(object sender, EventArgs e)
{
//hide
Device.BeginInvokeOnMainThread(async () =>
{
AbsoluteLayout.SetLayoutBounds(FloatView, new Rectangle(1, 0, 0.01, 0.01));
});
}

https://stackoverflow.com/questions/62299572
复制相似问题