美文网首页Android
Android 使用Application创建布局的问题

Android 使用Application创建布局的问题

作者: zyelement | 来源:发表于2021-12-21 18:29 被阅读0次

    使用换肤框架后,app运行时logcat报错 

    View class skin.support.widget.SkinCompatTextView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).

    一开始以为是换肤框架的问题,后面排查发现换肤框架并不是主要原因。

    首先:皮肤包在布局加载器 LayoutInflater 获取xml文件生成view的时候把View 替换为皮肤包下面的继承androidx.appcompat.widget. 包下的view,但是androidx.appcompat.widget 包下的控件构造器中有这么一个检查:

    图二可以看到,AppCompatTextView 创建时候会对 context 的主题进行检验,是否正确使用AppCompat主题,但是我们的项目一般都会在AndroidMainfest.xml文件Application下声明AppTheme所属主题,那么这是为什么呢。

    原因在于

    加载布局的时候使用application作为context传入,而ApplicationContext是没有应用主题数据的,必须要使用activity的context才可以

    附:stackoverflow 上关于这个问题的讨论

    相关文章

      网友评论

        本文标题:Android 使用Application创建布局的问题

        本文链接:https://www.haomeiwen.com/subject/nvvxqrtx.html