c # Xamarin формирует страницу содержимого — пробел сверху

#c# #xaml #xamarin #xamarin.forms

#c# #xaml #xamarin #xamarin.forms

Вопрос:

Казалось бы, это действительно просто (и, вероятно, так и есть), но я просто не могу найти никакой информации об этом.

Взгляните на: введите описание изображения здесь

Сверху есть белый пробел во всю ширину. Что это? Как мне избавиться от него или получить к нему доступ (добавить текст, кнопки, значки и т. Д.)?

Для этого теста мой код очень прост. 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:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"
     x:Class="TestApp.TestPage">
    <StackLayout VerticalOptions="FillAndExpand" Padding="0">
        <maps:Map x:Name="TestMap" IsShowingUser="true" MapType="Street" />
    </StackLayout>
</ContentPage>
  

.cs:

 using Xamarin.Forms;

    namespace Test
    {
        public partial class TestPage : ContentPage
        {
            public TestPage()
            {
                InitializeComponent();
            }
        }
    }
  

app.xaml:

 <ResourceDictionary>
    <Style TargetType="NavigationPage">
        <Setter Property="BarBackgroundColor" Value="White"/>
        <Setter Property="BarTextColor" Value="Black"/>
    </Style>
    <Style x:Key="DefaultPageStyle" TargetType="ContentPage">
        <Setter Property="BackgroundColor" Value="White"/>
    </Style>
</ResourceDictionary>
  

Редактировать: комментарий от @Vulcan Lee направил меня на путь поиска недостающей (ключевой) информации.

Который был внутри App.xaml.cs, у меня был:

 public App()
{
    InitializeComponent();

    MainPage = new NavigationPage(new TestPage());
}
  

Итак, это связано с меню навигации. Как мне получить к ней доступ, отформатировать или удалить ее?

Комментарии:

1. Какое устройство или эмулятор вы используете для тестирования, с которого был сделан снимок экрана?

2. @Brian Mains: этот снимок экрана сделан Genymotion. Но попытка с одним из эмуляторов по умолчанию показывает в основном то же самое.

3.Я копирую ваш супер простой. xaml и запускается на эмуляторе, то есть никакого пробела. Вы можете увидеть следующие 2 снимка экрана эмулятора. xamarindoggy.azurewebsites.net/Content/map1.png xamarindoggy.azurewebsites.net/Content/map2.png

Ответ №1:

Пробел на самом деле является панелью навигации.

Измените это:

new NavigationPage(new TestPage())

Для

new TestPage()

Или просто удалите панель навигации, если вы все еще хотите сделать первую страницу страницей навигации:

NavigationPage.SetHasNavigationBar(this, false);

Я помню, что это изменение введено в Xamarin.Формы 2.3.x.

Ответ №2:

Вы можете попробовать установить для карты значение VerticalOptions="FillAndExpand" . Это не окажет большого влияния на StackLayout , потому StackLayout что он просто хочет быть таким, какого размера его дочерние элементы. Если настройка карты VerticalOptions не работает, вы можете вместо этого установить ее HeightRequest свойство вручную.

Если все это не удается, я бы предложил вместо этого поместить карту в a Grid .