更改 Shell 类的后退按钮的覆盖文本的字体大小(以及,如果可能,其他字体格式属性)
Posted
技术标签:
【中文标题】更改 Shell 类的后退按钮的覆盖文本的字体大小(以及,如果可能,其他字体格式属性)【英文标题】:Altering the font size (and, if possible, other font formatting attributes) of the Shell class' back button's overridden text 【发布时间】:2021-02-23 18:08:22 【问题描述】:我有一个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??
提前致谢。
【问题讨论】:
【参考方案1】:在SetAppearance方法中添加断点,可以看到A在toolbar.NavigationIcon中显示,它不是public成员,我认为它没有被修改。
【讨论】:
【参考方案2】:通过分析作为被覆盖的SetAppearance()
方法的参数存在的AndroidX.AppCompact.Widget.Toolbar
类的实例(通过在所述方法中放置断点),可以看出后退按钮的被覆盖文本的字体大小为通过与NavigationIcon
属性对应的对象(Android.Graphics.Drawables.Drawable
类型)中存在的名为 _defaultSize
(其值设置为 50)的私有字段进行设置。
由于涉及更改字体大小的字段未声明为公共成员并且没有辅助属性/方法,因此必须使用反射将其值设置为所需的字体大小,如下所示:
int requiredFontSize = 100;
toolbar.NavigationIcon.GetType()
.GetField("_defaultSize",
BindingFlags.NonPublic | BindingFlags.Instance)
.SetValue(toolbar.NavigationIcon, requiredFontSize);
【讨论】:
很高兴听到您解决了您的问题,您可以将您的回复标记为答案,它可能对其他人有所帮助。以上是关于更改 Shell 类的后退按钮的覆盖文本的字体大小(以及,如果可能,其他字体格式属性)的主要内容,如果未能解决你的问题,请参考以下文章