2016-08-11 2 views

ответ

11

Вы можете попробовать Application.Current.MainPage.Width в моем случае это сработало, и я могу найти ширину устройства в самом портативном проекте.

+5

Это не работает для меня, я получаю исключение из null-указателя :( – mathkid91

3

Свойство Width можно использовать, если вы находитесь в ContentPage. Например,

protected override void OnAppearing() 
{ 
    base.OnAppearing(); 
    double w = this.Width; 
} 

Обратите внимание, что это задано во время фазы компоновки. Таким образом, вы можете использовать его только после инициализации страницы, иначе -1.

https://developer.xamarin.com/api/property/Xamarin.Forms.VisualElement.Width/

+0

вам, возможно, придется ждать Task.Delay (1000); для того, чтобы ширина появлялась ... – pollaris

+0

Task.Delay не является хорошим способом ожидания чтобы получить свойства размера. Вместо этого я предпочел бы подписаться на EventHandler «SizeChanged» такого вида: SizeChanged + = (sender, e) => {...}; –

5

Общий код (в App.xaml.cs)

public static int ScreenHeight {get; set;} 
public static int ScreenWidth {get; set;} 

Android части (в MainActivity.cs, в OnCreate метод)

App.ScreenHeight = (int) (Resources.DisplayMetrics.HeightPixels/Resources.DisplayMetrics.Density); 
App.ScreenWidth = (int) (Resources.DisplayMetrics.WidthPixels/Resources.DisplayMetrics.Density); 

Часть iOS (в приложении AppDelegate.cs, в методе FinishedLaunching)

App.ScreenHeight = (int)UIScreen.MainScreen.Bounds.Height; 
App.ScreenWidth = (int)UIScreen.MainScreen.Bounds.Width; 

Так App.ScreenHeight и App.ScreenWidth будет инициализирован, когда приложение будет запущено, то вы будете иметь возможность использовать их в любом месте в общем коде.

+0

это возвращает 0 для меня – Oz0234

+0

на iOS, то есть , похоже, работает на android – Oz0234

Смежные вопросы