Поворот экрана для определенных экранов в Xamarin.Forms - PullRequest
0 голосов
/ 19 марта 2019

Я попытался установить этот код на MainActivity.cs

[Activity(Label = "PG_ELearning.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.Portrait)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);

        global::Xamarin.Forms.Forms.Init(this, bundle);

        LoadApplication(new App());
    }
}

Но это заблокированное вращение экрана для всех экранов. Я хочу, чтобы на некоторых экранах (в которых я играю видео) должен был быть альбомный режим. Все экраны в общем коде Xamarin PCL. Я посетил эти ссылки:

http://www.appliedcodelog.com/2017/05/force-landscape-or-portrait-for-single.html

Как определить ориентацию экрана устройства в Xamarin.Forms?

Но я не могу найти правильный подход. Любая помощь будет отличной!

1 Ответ

1 голос
/ 20 марта 2019

вы можете использовать MessagingCenter для отправки вашего запроса направления экрана:

примерно так (например, на Android Ios похож на это):

в MainActivity , зарегистрируйтесь MessagingCenter, (имя и значение, которое вы можете указать)

MessagingCenter.Subscribe<string, int>("direction", "indext", (sender, args) => {
            switch (args)
            {
                case 0:
                    RequestedOrientation = ScreenOrientation.Portrait; //mandatory vertical screen
                    break;
                case 1:
                    RequestedOrientation = ScreenOrientation.Unspecified;//the default value
                    break;
            }
        });

и в вашем Pages отправьте сообщение:

protected override void OnAppearing()
  {
       base.OnAppearing();
       MessagingCenter.Send<string, int>("direction", "indext", num);//num = 0:Mandatory vertical screen,num = 1 :restore default
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...