如何在 Xamarin 表单中将视图限制为 16:9?

问题描述

我需要制作一个与设备横向高度相匹配的视图,但将视图的纵横比锁定为 16:9。我假设我需要以编程方式执行此操作,因为我需要获取屏幕宽度/高度。

我似乎无法在 GridView 或 AbsoluteLayout 中使用它。

感谢任何帮助。

编辑:添加了更多代码 + xaml 页面

编辑:当我运行它时,它似乎填满了整个屏幕。我希望它的两边都有黑条,但显然我做错了什么。

        
        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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...