2016-04-19 3 views
0

Im работает над приложением Forms, и мне просто интересно, может ли кто-нибудь помочь мне с ориентацией и поворотом устройства.Xamarin Forms device orientation

В основном в данный момент у меня есть три ряда кнопок изображения. То, что я хочу сделать, - это когда устройство повернуто на пейзаж, тогда все кнопки будут отображаться на одной горизонтальной линии вместо трех вертикальных строк.

Какой был бы лучший подход для этого? Я знаю, что в Android вы просто создаете другой файл макета xml и просто ссылаетесь на него, есть ли аналогичный способ сделать это в Xamarin Forms и XAML?

Я предоставлю мой MainPage.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"   x:Class="MyApp_Crossplatform.Views.MainPage" 
      Title="App" 
      BackgroundColor="White"> 
    <ContentPage.Content> 
    <StackLayout Padding="10" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Orientation="Vertical"> 
     <!--Main container layout--> 
     <StackLayout VerticalOptions="Fill" HorizontalOptions="Center" Orientation="Vertical"> 
     <!--Layout for each menu component--> 
     <StackLayout VerticalOptions="StartAndExpand" HorizontalOptions="CenterAndExpand" Orientation="Horizontal"> 
      <Image 
      x:Name="btnSocial" 
      Source="imgsocial.png" 
      WidthRequest="100" 
      HeightRequest="100" 
      VerticalOptions="CenterAndExpand" 
      HorizontalOptions="CenterAndExpand"/> 
      <Image 
      x:Name="btnCareer" 
      Source="imgcareer.png" 
      WidthRequest="100" 
      HeightRequest="100" 
      VerticalOptions="CenterAndExpand" 
      HorizontalOptions="CenterAndExpand"/> 
     </StackLayout> 
     <StackLayout VerticalOptions="StartAndExpand" HorizontalOptions="CenterAndExpand" Orientation="Horizontal"> 
      <Image 
      x:Name="btnSchedule" 
      Source="imgschedule.png" 
      WidthRequest="100" 
      HeightRequest="100" 
      VerticalOptions="CenterAndExpand" 
      HorizontalOptions="CenterAndExpand"/> 
      <Image 
      x:Name="btnContact" 
      Source="contact.png" 
      WidthRequest="100" 
      HeightRequest="100" 
      VerticalOptions="CenterAndExpand" 
      HorizontalOptions="CenterAndExpand"/> 
     </StackLayout> 
     <StackLayout VerticalOptions="StartAndExpand" HorizontalOptions="CenterAndExpand" Orientation="Horizontal"> 
      <Image 
      x:Name="btnDetails" 
      Source="imgdetails.png" 
      WidthRequest="100" 
      HeightRequest="100" 
      VerticalOptions="CenterAndExpand" 
      HorizontalOptions="CenterAndExpand"/> 
     </StackLayout> 
     </StackLayout> 
    </StackLayout> 
    </ContentPage.Content> 
</ContentPage> 

Если кто-то может помочь, что было бы здорово.

+0

Это подробно объясняется здесь: https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/device-orientation/ –

ответ

1

Формы не событие OnRotation (пока) - но вы можете получить что-то подобное с помощью OnSizeAllocated

protected override void OnSizeAllocated(double width, double height) 
{ 
    base.OnSizeAllocated(width, height); //must be called 

    if (width > height) { 
     // landscape 
    } else { 
     // portrait 
    } 
} 

можно затем изменить ориентацию StackLayout от горизонтального до вертикального, как это необходимо.

Ориентация в формах обсуждается более подробно here.