Android 上的 VisualElement 提升
在面向 API 21 或更高版本的应用程序上,此 Android 平台特定功能用于控制视觉元素的提升(也称为 Z 顺序)。 视觉元素的提升决定了其绘制顺序,Z 值更高的视觉元素遮挡 Z 值更低的视觉元素。 通过将 VisualElement.Elevation
附加属性设置为 boolean
值在 XAML 中使用它:
<ContentPage ...
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
Title="Elevation">
<StackLayout>
<Grid>
<Button Text="Button Beneath BoxView" />
<BoxView Color="Red" Opacity="0.2" HeightRequest="50" />
</Grid>
<Grid Margin="0,20,0,0">
<Button Text="Button Above BoxView - Click Me" android:VisualElement.Elevation="10"/>
<BoxView Color="Red" Opacity="0.2" HeightRequest="50" />
</Grid>
</StackLayout>
</ContentPage>
或者,可以使用 Fluent API 从 C# 使用它:
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...
public class AndroidElevationPageCS : ContentPage
{
public AndroidElevationPageCS()
{
...
var aboveButton = new Button { Text = "Button Above BoxView - Click Me" };
aboveButton.On<Android>().SetElevation(10);
Content = new StackLayout
{
Children =
{
new Grid
{
Children =
{
new Button { Text = "Button Beneath BoxView" },
new BoxView { Color = Color.Red, Opacity = 0.2, HeightRequest = 50 }
}
},
new Grid
{
Margin = new Thickness(0,20,0,0),
Children =
{
aboveButton,
new BoxView { Color = Color.Red, Opacity = 0.2, HeightRequest = 50 }
}
}
}
};
}
}
该 Button.On<Android>
方法指定此平台特定仅在 Android 上运行。 Xamarin.Forms.PlatformConfiguration.AndroidSpecific
命名空间中的 VisualElement.SetElevation
方法用于将视觉元素的提升设置为可为 null 的 float
。 此外,VisualElement.GetElevation
方法还可用于检索视觉元素的提升值。
这样,可以控制视觉元素的提升,从而 Z 值更高的视觉元素遮挡 Z 值更低的视觉元素。 因此在本例中,第二个 Button
在 BoxView
上面呈现,因为它具有更高的提升值: