在项目的res/values
目录中,有一个my_themes.xml
文件,用于指定自定义属性和两个自定义主题(浅色和深色)。这些主题通过Presentation
的方式(以代码形式)应用于the third constructor parameter对象。
在编辑布局文件时,我希望能够选择两个主题之一,并在布局预览中查看主题结果。当我运行代码时,一切正常。这只是有关如何获取布局预览以向我展示主题的问题。
但是,似乎无法选择我的自定义主题。当我单击下拉列表以选择要使用的主题时,只有我的“默认” AppTheme
(及其父项)可见:
如果我单击“更多主题...”,则我的自定义主题不在选项中。在这里,我正在搜索“我的”(它们是MyLightTheme
和MyDarkTheme
),但结果为零:
my_themes.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="MyCustomAttr" format="reference"/>
<attr name="MySecondCustomAttr" format="reference"/>
<style name="MyLightTheme" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
<item name="MyCustomAttr">@drawable/light_thing</item>
<item name="MySecondCustomAttr">@drawable/second_light_thing</item>
</style>
<style name="MyDarkTheme" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
<item name="MyCustomAttr">@drawable/dark_thing</item>
<item name="MySecondCustomAttr">@drawable/second_dark_thing</item>
</style>
</resources>
主题Presentation
子类:
open class MyThemedPresentation(outerContext: Context?, display: Display?, isLight: Boolean)
: Presentation(outerContext, display, getTheme(isLight)) {
companion object {
@StyleRes
@JvmStatic
fun getTheme(isLight: Boolean): Int =
when (isLight) {
true -> R.style.MyLightTheme
false -> R.style.MyDarkTheme
}
}
}
答案 0 :(得分:0)
我一直无法找到使主题出现在问题中提到的下拉菜单中的方法,但是我可以通过将CSRF
属性添加到问题的根视图中来解决此问题。布局。
例如:
tools:theme
然后,无论在下拉菜单中选择了什么主题,布局预览都将使用指定的主题。