前提条件
- 由于涉及到Toolbar,因此需要首先设置Activity主题为NoActionBar
- 如下
- 再来看自定义主题,主要是可以改变colorPrimary、colorAccent常用背景颜色。
- 其实不用这么麻烦,完全可以采用系统自带的NoActionBar,比如
…
- 写项目的过程中突然发现xml文件报错
- 但并不影响项目的运行,虚拟机跑出来的效果很正常,就很神奇。
- 之所以注意到这个问题,是因为有个layout布局,预览不出来,就发现了报错信息。
- 之前一直忽略xml文件也会报错,今后一定要注意了。
发现问题,解决问题
- 首先看下报错信息:
- 大意是在现存的主题中没有这个id 0x7f15febf的,但是我们却使用这个了。
- 回想整个项目中就开始的时候自定义了一个主题,可能那里出错了,我们将自定义主题
android:theme="@style/AppTheme.NoActionBar"
换成系统主题android:theme="@style/Theme.AppCompat.NoActionBar"
- 然后我们在xml文件中点击错误信息中的refresh按钮
- 发现错误信息解决了,只剩下警告信息,这里不用管警告信息(主要是字符串写的方式不符合语法)。
- 但这时,我们还是想保留自定义主题,怎么办呢?
- 这时我们定位到themes.xml文件,发现我们的自定义主题是在系统自带的下面接着写的,没有覆盖原来的。
- 如果我们把系统自带的Theme注释掉,会怎么样呢?
- 点击错误信息中的refresh按钮,发现错误也同样解决了。
- 所以这里猜测,如果不覆盖系统自带的Theme定义语句,主题的id不会被系统识别。
深思
- 其实到这里自己还是没深入了解为什么会发生这个错误
- 只是凑巧得到了解决办法,但肯定不是唯一的解决办法
- 总觉得是自定义主题的定义和使用语法那,有需要注意的地方,自己当初没有仔细去学习这一块,拿过来就用了,以后有时间会再去看一遍。