首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认字体的注入

默认字体的注入
EN

Stack Overflow用户
提问于 2015-03-09 19:49:13
回答 3查看 445关注 0票数 1

目标:

通过MvvmCross隐式(通过默认)和显式(通过查看代码)对Xamarin中的字体进行动态主题化。

背景:

确定了两种优秀的Android字体定制实现:

书法拦截了Android视图(使用Android上下文包装器)的膨胀,并对其进行操作以产生预期的效果。

MvvmCross已经被采用,并在安卓视图膨胀期间执行其操作。

而不是引入另一种技术(书法-Xamarin),这是具体的平台-我想知道是否有一种雄辩的方式来实现一个跨平台,动态字体主题引擎与MvvmCross。

将跨平台进程注入到视图的MvvmCross创建中.这将执行隐式和显式字体主题化。

建议、想法和/或评论,有人吗?

EN

回答 3

Stack Overflow用户

发布于 2015-05-27 14:04:05

解决方案是将MvvmCross绑定充气替换为修改后的版本,该版本将首先调用书法的充气逻辑。请记住,它们是开源项目,因此这是可能的,代价是必须维护源代码分叉。

无论在MvvmCross的容器上注册什么都是赢家--所以您只需将修改后的版本从MvvmCross的绑定充气到最后注入即可。

希望这有意义..。如果没有,请立即要求提供补充资料和(或)澄清。

其他信息..。

我不再能够访问该源代码,也无法使用开发环境为您创建一个可行的解决方案。也就是说,对于使用Xamarin创建Android解决方案的软件开发人员来说,以下信息应该是足够的。

  1. 检索并将以下项目添加到您的解决方案(书法) https://github.com/mikescandy/Calligraphy-xamarin中,从您的Android特定项目中添加对该项目的引用。
  2. 检索以下项目并将其添加到您的解决方案(MvvmCross) https://github.com/MvvmCross/MvvmCross --在任何地方都不添加对该项目的引用。
  3. 将MvvmCross的MvxAndroidBindingContext.cs单元复制到您的Android项目中(建议更改命名空间),然后修改其.公共虚拟视图BindingInflate(int resourceID,ViewGroup viewGroup),以便在使用MvvmCross绑定创建视图之后调用CalligraphyFactory.cs OnViewCreated()方法。CalligraphyFactory::OnViewCreated()是应用字体面板的地方,MvxAndroidBindingContext::BindingInflate()是应用MvvmCross绑定创建视图的地方。
  4. 查看MvvmCross如何在其项目中注册MvxAndroidBindingContext,然后对您的实现进行同样的操作,确保它是最后一个,因此它将覆盖原始的。如果我没有记错,这将在安装程序::CreateApp()方法中完成。
  5. 确保您正确初始化书法(请参阅其文档)。

你可能需要一段时间才能理解我所写的东西,也许会有一些错误,因为很多时间过去了,我没有能力去检查它,但我100%肯定这个想法会成功地将书法纳入Xamarin / MvvmCross,因为毫无疑问,我确实让它发挥了作用。

票数 1
EN

Stack Overflow用户

发布于 2015-05-26 10:16:23

这个有什么进展吗?MvvmCross和书法-XamariM似乎玩得不太好。我得到"Android.Views.InflateException“。我猜这是因为两位自由主义者都试图推翻通胀观点。

票数 0
EN

Stack Overflow用户

发布于 2017-02-12 21:48:49

我发布了一个Nuget包,这基本上是WindSpirit所说的。https://www.nuget.org/packages/MvvmCross.Calligraphy/

书法的问题是CalligraphyFactory不是公开的.您只需修改设置如下:

代码语言:javascript
复制
public class Setup : MvxAndroidSetup
{
    protected override MvxAndroidBindingBuilder CreateBindingBuilder()
    {
        return new CalligraphyMvxAndroidBindingBuilder();
    }
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28950588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档