0

我的项目中有一个主从页面,我已将电话语言设置为阿拉伯语,一切正常,主页面在右侧,图标在右侧。但问题是当手机设置为阿拉伯语时,TitleView(工具栏项)被推到右边一点。我在没有 Master-Detail 页面项目的情况下尝试了这个,TitleView 工作正常,它在正确的位置。

使用主详细信息页面:

<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>

结果:

标题视图1

没有主详细信息页面:

<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>

结果:

标题视图2

4

2 回答 2

0

我的理解告诉我您正在尝试添加工具栏项,因此您不要为此使用 titleView:

另一方面,您应该做的是如下所示

C#:

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

XAML:

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

要了解 Xamarin 表单工具栏,请查看Adam Pedley 的本指南

更新

我有一种感觉,您在 Frame 上使用的填充是推动您的视图的原因

 Padding="10,4"

检查这个:

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

也可以是圆角半径。

于 2019-02-20T09:53:47.757 回答
0
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">
于 2019-03-13T12:30:32.857 回答