自定义TitleView在两侧显示白色小边框

时间:2019-05-09 18:41:04

标签: xamarin xamarin.forms

在下面的屏幕截图中,我的应用程序显示了一个标题栏,该标题栏的左右两侧都有一个小的白色边框。设置自定义TitleView时如何摆脱这个边界?在下面的情况下,红色框应该从屏幕的边缘延伸到另一端,但是您可以在两侧看到白色的小边框。

enter image description here

在这里设置导航页。

public partial class App : Application
{
    public App()
    {
        InitializeComponent();

        ContainerRegistration.Register();

        var authPage = FreshPageModelResolver.ResolvePageModel<LoginPageModel>();
        var authPageNavigation = new FreshNavigationContainer(authPage, NavigationContainerNames.AuthenticationContainer);

        MainPage = authPageNavigation;
    }
}

这里是XAML,它引用导航页面以将TitleView的内容设置为BoxView

<?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:control="clr-namespace:WP.MobileMidstream.Device.Pages"
             x:Class="WP.MobileMidstream.Device.Pages.LoginPage"             
             Visual="Material">
    <NavigationPage.TitleView>
        <BoxView BackgroundColor="Red" />
    </NavigationPage.TitleView>
    <ContentPage.Content>
        <StackLayout Orientation="Vertical">
            <Entry Placeholder="Username" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

4 个答案:

答案 0 :(得分:1)

似乎导航栏具有默认的填充设置(尽管我无法在任何地方找到记录的设置),而且我也找不到改变它的方法(不使用自定义渲染器)。

尽管如此,如果您要查找的只是简单地获得所需颜色的整个条形,则可以如下设置页面的BarBackgroundColor属性:

protected override void OnAppearing()
{
    base.OnAppearing();
    ((NavigationPage)App.Current.MainPage).BarBackgroundColor = Color.Red;
}

enter image description here

答案 1 :(得分:0)

我建议您不要在NavigationPage.TitleView中添加BoxView,只需在App.xaml.cs中设置BarBackgroundColor,如下所示:

<?xml version="1.0" encoding="utf-8" ?>

<!--<NavigationPage.TitleView>
    <BoxView BackgroundColor="Red" VerticalOptions="CenterAndExpand" />
</NavigationPage.TitleView>-->
<ContentPage.Content>
    <StackLayout Orientation="Vertical">
        <Entry Placeholder="Username" />
    </StackLayout>
</ContentPage.Content>

 public App()
    {
        InitializeComponent();

        MainPage = new NavigationPage(new MainPage()) { BarBackgroundColor=Color.Red};

    }

enter image description here

答案 2 :(得分:0)

这救了我!在App.xaml中添加ot

在ResourceDictionary下

<ResourceDictionary>
    <!--Global Styles-->
    <Style TargetType="NavigationPage">
            <Setter Property="BarBackgroundColor" Value="Red"/>
            <Setter Property="BarTextColor" Value="White"/>
    </Style>
</ResourceDictionary>

答案 3 :(得分:0)

这实际上取决于您用于工具栏的解决方案。 大多数情况下,在您的 android 解决方案中更新工具栏就足够了。 如果它不起作用,它可能在您的工具栏渲染器中(如果您使用)或在 styles.xml 中 Check out for more solutions

app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp" 

完整的工具栏.xml

<androidx.appcompat.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:contentInsetLeft="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetStartWithNavigation="0dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />