问题描述
我需要制作一个与设备横向高度相匹配的视图,但将视图的纵横比锁定为 16:9。我假设我需要以编程方式执行此操作,因为我需要获取屏幕宽度/高度。
我似乎无法在 GridView 或 AbsoluteLayout 中使用它。
感谢任何帮助。
编辑:当我运行它时,它似乎填满了整个屏幕。我希望它的两边都有黑条,但显然我做错了什么。
public MainPage()
{
VideoView.SizeChange += SetupLayout;
}
private void SetupLayout(object sender,EventArgs e)
{
double width = (Devicedisplay.MaindisplayInfo.Height / 9) * 16;
VideoView.Layout(new Rectangle(0,width,Devicedisplay.MaindisplayInfo.Height));
CanvasView.Layout(new Rectangle(0,Devicedisplay.MaindisplayInfo.Height));
LabelRoomName.Layout(new Rectangle(0,1,40));
}
还有 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"
xmlns:tt="clr-namespace:TouchTracking.Forms;assembly=TouchTracking.Forms"
x:Class="uarapp.Core.Views.CallingPage"
xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
NavigationPage.HasNavigationBar="false">
<AbsoluteLayout>
<ContentView x:Name="VideoView"
Margin="0"
/>
<skia:SKCanvasView x:Name="CanvasView"
PaintSurface="OnCanvasViewPaintSurface"
Margin="0"
BackgroundColor="AliceBlue"
/>
<Label x:Name="LabelRoomName"
HorizontalOptions="CenterandExpand"
VerticalOptions="End"
Text="Room label"
FontSize="Medium"
FontAttributes="Bold"
TextColor="#ECD035"/>
<Frame BackgroundColor="Black"
Opacity="0.8"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
x:Name="Spinner"
IsVisible="false">
<ActivityIndicator IsRunning="True"
VerticalOptions="Center"
Color="White"
HorizontalOptions="Center"/>
</Frame>
<AbsoluteLayout.Effects>
<tt:TouchEffect Capture="True"
TouchAction="OnTouchEffectAction" />
</AbsoluteLayout.Effects>
</AbsoluteLayout>
</ContentPage>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)