Xamarin - StackLayout внутри NavigationPage.TitleView не будет использовать все пространство? - PullRequest
1 голос
/ 18 октября 2019

У меня есть TitleView на некоторых страницах содержимого моего приложения, и я хочу, чтобы StackLayout, содержащий весь текст, занимал доступное пространство. Тем не менее, установка для его HorizontalOptions значения Fill или FillAndExpand не работает так, как обычно в ContentPage, и вместо этого StackLayout имеет такую ​​же ширину, как и метки, которые у меня есть внутри.

Мой код XAML:

<NavigationPage.TitleView>
        <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" x:Name="TitleBarLayout">
            <Label Text="PageTitle"
                   TextColor="White"
                   FontSize="20"
                   FontAttributes="Bold"
                   HorizontalOptions="Start"
                   x:Name="PageTitle"/>
            <Label Text="Text1:"
                   FontSize="20"
                   TextColor="LightGray"
                   HorizontalOptions="End"/>
            <Label x:Name="Label1"
                   FontSize="20"
                   TextColor="Black"
                   HorizontalOptions="End"/>
            <Label Text="Text2:"
                   FontSize="20"
                   TextColor="LightGray"
                   HorizontalOptions="End"/>
            <Label x:Name="Label2"
                   FontSize="20"
                   TextColor="Black"
                   HorizontalOptions="End"/>
            <Label Text="Text3:"
                   FontSize="20"
                   TextColor="LightGray"
                   HorizontalOptions="End"/>
            <Label x:Name="Label3"
                   FontSize="20"
                   TextColor="Black"
                   HorizontalOptions="End"/>
        </StackLayout>
    </NavigationPage.TitleView>

Поэтому в идеале я хочу, чтобы ярлык «PageTitle» располагался прямо рядом со стрелкой «Назад», а затем располагал все остальное на другом конце панели навигации. - как вы можете видеть, я установил HorizontalOptions="Start" для PageTitle и HorizontalOptions="End" для всего остального.

Результат этого кода такой: enter image description here

И желаемый результат таков (отредактировано в Paint):

enter image description here

Я также попытался получить ширину страницы в C # и установить поле дляметка PageTitle, как показано ниже:

double width = App.Current.MainPage.Width / 4;
PageTitle.Margin = new Thickness (0,0,width,0);

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

Пожалуйста, никаких рекомендаций для пользовательских инструментов, за исключением случаев, когда абсолютно необходимо.

1 Ответ

3 голосов
/ 18 октября 2019

Это можно исправить, изменив HorizontalOptions первой метки на FillAndExpand или StartAndExpand

<Label Text="PageTitle"
        TextColor="White"
        FontSize="20"
        FontAttributes="Bold"
        HorizontalOptions="StartAndExpand"
        x:Name="PageTitle"/>

. Это заставит остальные элементы перейти в конец.

Надеюсь, это поможет .-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...