Android:更改动态添加的Switch颜色

时间:2018-06-05 11:04:05

标签: android android-theme

Android初学者在这里,所以请耐心等待......

我正在使用抽屉,其中菜单项是动态添加的。目前,这就是我的代码:

val menu = nav_view.menu
menu.clear()
val selectedCatalogIsEmpty = selectedCatalogs.isEmpty()
for (catalog in catalogs){
    val menuItem = menu.add(R.id.catalog_items, Menu.FIRST + catalog.catalogId, Menu.NONE, catalog.catalogName)
    val switch = Switch(applicationContext)
    menuItem.actionView = switch
    if(selectedCatalogIsEmpty ||
            selectedCatalogs.contains(catalog.catalogId) ) {
        menuItem.isChecked = true
        switch.isChecked = true
        if(selectedCatalogIsEmpty){
            selectedCatalogs.add(catalog.catalogId)
        }
    }

    switch.setOnCheckedChangeListener { _, isChecked -> menuItem.isChecked = isChecked }
}

val menuItemSettings = menu.add(R.id.settings, Menu.NONE+ 5000, Menu.NONE, "Settings" )

现在,我想做的是在处于选定状态时更改thum的颜色。为了实现这一点,我在styles.xml文件中添加了以下内容:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="colorControlNormal">@color/colorWhite</item>
    <item name="colorControlActivated">@color/colorPrimary</item>
</style>

不幸的是,我在运行时仍然得到了错误的颜色。而不是蓝色。我得到一个绿色的拇指:

enter image description here

很明显,我完全忽略了这一点......我已经进行了几次搜索,人们建议使用SwitchCompat而不是Switch。我已经尝试过这样做,但我也必须遗漏一些东西,因为我最终用非常小的大写字母(而不是我用Switch视图获得的拇指)来查看文本。

感谢。

此致 路易斯

1 个答案:

答案 0 :(得分:0)

好的,所以超过3个小时后,我终于发现了我的错误:我使用rvm来初始化applicationContext并且应用程序的主题未初始化:它仅用于申请剩余活动的默认主题。因此,将Switch实例化更新为此类可解决问题:

Switch