我有一个ContentPage
(这是子类Shell
类的内容),当查看时,需要在导航栏中显示带有特定字符串文本的后退按钮。
<ContentPage
....>
<Shell.NavBarIsVisible>True</Shell.NavBarIsVisible>
<Shell.BackgroundColor>Black</Shell.BackgroundColor>
<Shell.BackButtonBehavior>
<BackButtonBehavior IsEnabled="True"
TextOverride="A" />
</Shell.BackButtonBehavior>
.....
</ContentPage>
带有所需文本的后退按钮按预期显示在导航栏中,但文本在 Android 平台中并不完全符合所需的字体大小。
像往常一样,我试图通过使用Android平台的自定义shell渲染器来解决这个问题(如下所示),但我无法理解改变后退按钮文本字体大小的方法。
class ShellRenderer
: ShellRenderer
{
public ShellRenderer
(Context context) : base(context) { }
protected override IShellToolbarAppearanceTracker
CreateToolbarAppearanceTracker()
{
return new CustomToolbar(this);
}
public class CustomToolbar
: ShellToolbarAppearanceTracker
{
public CustomToolbar
(IShellContext context) : base(context)
{
}
public override void SetAppearance
(AndroidX.AppCompat.Widget.Toolbar toolbar,
IShellToolbarTracker toolbarTracker,
ShellAppearance appearance)
{
base.SetAppearance
(toolbar, toolbarTracker, appearance);
// How do you increase the font size of the back button??
}
}
}
提前谢谢。
在SetAppearance方法中添加断点,您可以看到A显示在工具栏中。导航图标,它不是公共成员,我认为它没有被修改。
在分析了< code>AndroidX的实例后。app compact . widget . toolbar 类作为被覆盖的< code>SetAppearance()方法的参数存在(通过在所述方法中放置断点),可以看出,后退按钮的被覆盖文本的字体大小是通过对象(类型为< code>Android)中存在的名为< code>_defaultSize(其值设置为50)的私有字段设置的。graphics . drawables . drawable )对应于< code>NavigationIcon属性。
由于与字体大小更改相关的字段未声明为公共成员,并且没有帮助器属性/方法,因此必须使用反射将其值设置为所需的字体大小,如下所示:
int requiredFontSize = 100;
toolbar.NavigationIcon.GetType()
.GetField("_defaultSize",
BindingFlags.NonPublic | BindingFlags.Instance)
.SetValue(toolbar.NavigationIcon, requiredFontSize);