Xamarin.Forms - независимый от устройства способ заставить панель внизу скользить вверх, чтобы покрыть всю высоту экрана

Я работаю над мобильным приложением в Xamarin.Forms с панелью «новые сообщения» внизу экрана, например:

----------------------
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|--------------------|
| 4 New Messages   ^ |
----------------------

Когда пользователь нажимает на панель внизу («4 новых сообщения»), я хочу, чтобы эта панель скользила до самого верха экрана вместе со списком заголовков сообщений под ней (которые изначально скрыты вне поля зрения). ), чтобы вся область сообщений (заголовок «4 новых сообщения» плюс список заголовков сообщений под ним) занимала весь экран, например:

----------------------
| 4 New Messages   X |
|--------------------|
| - Tomorrow Night   |
| - New product in...|
| - Outing cancelled |
| - Please call me   |
|                    |
|                    |
|                    |
----------------------

Я могу сделать всю область сообщений абсолютным макетом, который занимает весь экран (parentElement.Children.Add(messagesArea, new Rectangle(0, 0, 1, 1), AbsoluteLayoutFlags.All);), и сделать его изначально в основном скрытым за пределами экрана (за исключением панели «4 новых сообщения») с помощью TranslateY; а затем я могу использовать TranslateTo(0, 0), чтобы заставить его вернуться на полную высоту экрана.

НО это предполагает, что я знаю высоту устройства. Каков наилучший способ сделать это независимым от устройства способом? И должен ли я использовать сетку для начала?


person jbyrd    schedule 26.10.2017    source источник
comment
получить ширину и высоту экрана: stackoverflow.com/questions/41489532/   -  person Jason    schedule 26.10.2017