xamarin формирует главное направление страницы в арабском языке - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть страница Master-Detail в моем проекте, я установил язык телефона на арабский, и все работает нормально, главная страница справа, а значок справа.Но дело в том, что TitleView (панели инструментов) немного сдвинут вправо, когда телефон установлен на арабский.Я пробовал это без проекта страницы Master-Detail, и TitleView работает нормально, и он находится в точном месте.

С страницей Master Detail:

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                  xmlns:local="clr-namespace:AppXamarin.Pages"
                  x:Class="AppXamarin.Pages.MasterMainPage" NavigationPage.HasNavigationBar="False" NavigationPage.HasBackButton="False" FlowDirection="{x:Static Device.FlowDirection}">
    <MasterDetailPage.Master>
        <local:MasterPage x:Name ="masterPage" FlowDirection="{x:Static Device.FlowDirection}"/>
    </MasterDetailPage.Master>
    <MasterDetailPage.Detail>
        <NavigationPage FlowDirection="{x:Static Device.FlowDirection}">
            <x:Arguments>
                <local:MenuPage></local:MenuPage>
            </x:Arguments>
        </NavigationPage>
    </MasterDetailPage.Detail>
</MasterDetailPage>

Файл MenuPage Xaml:

 <NavigationPage.TitleView>
        <Grid Grid.Row="0" Grid.Column="0" HorizontalOptions="EndAndExpand" FlowDirection="{x:Static Device.FlowDirection}">
            <Grid.GestureRecognizers>
                <TapGestureRecognizer Tapped="cart_Clicked"/>
            </Grid.GestureRecognizers>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <Image x:Name="BadgeIconImage" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Grid.ColumnSpan="2" Margin="6" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Source="cart">
                <Image.HeightRequest>
                    <OnIdiom Phone="25" Tablet="35"/>
                </Image.HeightRequest>
                <Image.WidthRequest>
                    <OnIdiom Phone="25" Tablet="35"/>
                </Image.WidthRequest>
            </Image>
            <Frame x:Name="BadgeFrame" Grid.Row="0" Grid.Column="1" CornerRadius="12" Padding="10,4" HasShadow="false" OutlineColor="Transparent" BackgroundColor="Transparent">
                <Label x:Name="BadgeTextLabel" FontSize="12" FontAttributes="Bold" HorizontalOptions="EndAndExpand" TextColor="#FF0000"/>
            </Frame>
        </Grid>
    </NavigationPage.TitleView>

Результат:

titleview1

Без главной страницы сведений:

<NavigationPage.TitleView>
 <Grid Grid.Row="0" Grid.Column="0" HorizontalOptions="EndAndExpand" FlowDirection="{x:Static Device.FlowDirection}">
            <!--<Grid.GestureRecognizers>
                <TapGestureRecognizer Tapped="cart_Clicked"/>
            </Grid.GestureRecognizers>-->
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <Image x:Name="BadgeIconImage" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Grid.ColumnSpan="2" Margin="6" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Source="cart">
                <Image.HeightRequest>
                    <OnIdiom Phone="25" Tablet="35"/>
                </Image.HeightRequest>
                <Image.WidthRequest>
                    <OnIdiom Phone="25" Tablet="35"/>
                </Image.WidthRequest>
            </Image>
            <Frame x:Name="BadgeFrame" Grid.Row="0" Grid.Column="1" CornerRadius="12" Padding="10,4" HasShadow="false" OutlineColor="Transparent" BackgroundColor="Transparent">
                <Label x:Name="BadgeTextLabel" FontSize="12" FontAttributes="Bold" HorizontalOptions="EndAndExpand" TextColor="#FF0000"/>
            </Frame>
        </Grid>
        <!--</Grid>-->
    </NavigationPage.TitleView>

Результат:

titleview2

Ответы [ 2 ]

0 голосов
/ 13 марта 2019
Yes I did it

manifest :

 <application android:label="Sanaap" android:icon="@mipmap/launcher_foreground" android:theme="@style/MainTheme" android:supportsRtl="true">

MainView.xaml

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Sanaap.App.Views.MenuView" 
             FlowDirection="RightToLeft"
             Title="Main">
0 голосов
/ 20 февраля 2019

Насколько я понимаю, вы пытаетесь добавить элементы панели инструментов, поэтому вы не используете titleView для этого:

С другой стороны, то, что вы должны делать, это что-то вроде ниже

C #:

 this.ToolbarItems.Add(new ToolbarItem()
        {
            Icon = "BadgeIconImage",
            Command = YourCommand,
        });

XAML:

<ContentPage.ToolbarItems>
<ToolbarItem  Order="Primary" Icon="BadgeIconImage" />    
</ContentPage.ToolbarItems>

Чтобы понять, как проверять панель инструментов Xamarin Forms это руководство АдамаPedley

Обновление

У меня такое ощущение, что отступы, которые вы используете в кадре, - это то, что подталкивает ваш View

 Padding="10,4"

Проверьте это:

<Frame x:Name="BadgeFrame" Grid.Row="0" Grid.Column="1" CornerRadius="12" Padding="10,4" HasShadow="false" OutlineColor="Transparent" BackgroundColor="Transparent">

Также может быть угловой радиус.

...