Xamarin字体设置

关于Xamarin的那些坑

第一次用xamarin来开发app,真的很鸡肋,处处充满了坑,总是会莫名其妙的报错,现在来记录一下自己开发中出现的一些比较难解决的问题

  1. xamarin安卓端的字体会随着手机系统本身的设置而跟着变大变小,这个会比较影响应用的使用体验,这个可以在安卓项目的MainActivity类里面定义一个方法并在OnCreated()里调用:
	private void initFontScale()
        {
            //var config = Android.App.Application.Context.Resources.Configuration;
            //config.FontScale = 1.00f; ;
            //DisplayMetrics metrics = new DisplayMetrics();
            //WindowManager.DefaultDisplay.GetMetrics(metrics);
            //BaseContext.Resources.UpdateConfiguration(config, metrics);
            using (var resources = this.BaseContext.Resources)
            {
                using (var config = this.BaseContext.Resources.Configuration)
                {
                    config.FontScale = 1.00f;
                    DisplayMetrics metrics = new DisplayMetrics();
                    resources.UpdateConfiguration(config, metrics);
                }
            }
        }

在这里插入图片描述
2. PS:如果你的xamarin项目里面嵌入了webview页面之后,Webview里面的页面字体也会随着手机系统字体而变大,上面那段代码对webvew页面并没什么用,因此得单独设置,我这里的做法是在安卓端新建一个WebView的渲染器,并在渲染器里面加上以下圈起来的代码
在这里插入图片描述
3、如果你从webview页面退出去之后,你会发现,xamairn里面的字体又变乱了,所以你又得重新调用一次第一步的代码,这里需要在安卓项目里面定义一个接口和一个类去继承接口服务进行调用,不然你在页面无法执行第一步的代码,定义服务之后,在MainPage页面出现之后引用该服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
很遗憾的是后面发现上面这个方法会影响到listview控件的使用,所以最终没有采纳,后面偶然之间发现另外一个乐于分享的网友分享了一个自己的解决方案:
具体的做法是:
我们只需要重写一个 AttachBaseContext 方法, 把其中的Context覆盖即可, 方法如下。

protected override void AttachBaseContext(Context @base)
        {
            Configuration config = new Configuration();
            config = @base.Resources.Configuration;
            config.FontScale = 1.00f;
            Context context = @base.CreateConfigurationContext(config);
            base.AttachBaseContext(context);
        }

在这里插入图片描述
参考链接https://www.cnblogs.com/zh7791/p/12522651.html
感谢乐于分享的那位朋友

后面查阅了文档,找到可以禁止ios平台字体随苹果系统变大的方法,但是iOS默认的弹窗无法控制,其他字体可以控制住
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值