1

这个问题类似于这些(123)问题,但他们的解决方案都没有解决我的问题。

问题是一样的,我需要删除左侧的填充TitleView,如下所示:

带有左填充的导航栏

我创建了一个自定义Toolbar布局,定义为:

<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/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:contentInsetLeft="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetStartWithNavigation="0dp"/>

在调用我ToolbarResource的. 填充物仍然存在。Resource.Layout.Toolbarbase.OnCreate(savedInstanceState);MainActivity.cs

<NavigationPage.TitleView> ... </NavigationPage.TitleView>

似乎自定义Toolbar布局不会覆盖Shell的导航栏,而是NavigationPages。我正在使用Shell.TitleView.

有谁知道如何覆盖和删除Shell导航栏中的填充?

4

1 回答 1

0

您可以使用 CustomShellRenderer 来获取 shellpage 的工具栏并设置属性。比如下面的代码。

MyShellRenderer.cs

using Android.Content;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(App9.ShellTest), 
typeof(App9.Droid.MyShellRenderer))]
namespace App9.Droid
{
    internal class MyShellRenderer : ShellRenderer
    {
        public MyShellRenderer(Context context) : base(context)
        {
        }

        protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
        {
            return new MyShellToolbarAppearanceTracker(this);
        }
    }
}

MyShellToolbarAppearanceTracker.cs

using Xamarin.Forms.Platform.Android;

namespace App9.Droid
{
    public class MyShellToolbarAppearanceTracker : 
ShellToolbarAppearanceTracker
    {
        public MyShellToolbarAppearanceTracker(IShellContext context) : 
base(context)
    {
    }

        public override void ResetAppearance(AndroidX.AppCompat.Widget.Toolbar toolbar, IShellToolbarTracker toolbarTracker)
        {
            base.ResetAppearance(toolbar, toolbarTracker);
            toolbar.SetContentInsetsRelative(0, 0);
            toolbar.ContentInsetStartWithNavigation = 0;
        }

    }
}
于 2021-12-31T08:18:13.710 回答