以编程方式更改Kotlin中的AppBar背景颜色

时间:2018-04-12 14:00:09

标签: android kotlin android-appbarlayout

我是Android开发的新手,对Kotlin来说是全新的。我有一个带导航抽屉的应用程序,我正在尝试根据用户从导航抽屉中选择的内容来更改AppBarLayout的颜色。我尝试了几种不同的方法,最接近的是改变工具栏颜色而不是整个AppBar。这可能是可以接受的,但不是实际将其设置为我想要的颜色,而是始终将其更改为深灰色。

when (item.itemId) {
    R.id.nav_audit -> {
        txtMain.text = "Audit"
        toolbar.setBackgroundColor(R.color.colorAudit)
        loadAudits()
    }
    R.id.nav_testing -> {
        txtMain.text = "Testing"
        toolbar.setBackgroundColor(R.color.colorTesting)
    }
    R.id.nav_workflow -> {
        txtMain.text = "Workflow"
        toolbar.setBackgroundColor(R.color.colorWorkflow)
    }
    R.id.nav_other -> {
        txtMain.text = "Other"
        toolbar.setBackgroundColor(R.color.colorPrimary)
    }
}

我也看过可能会更改主题,但看起来在应用程序加载后可能并不容易。任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:2)

除了更改您已经在做的工具栏的颜色外,在Kotlin中更改状态栏的一种方法是这样的:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
   (activity as? AppCompatActivity)?.window?.statusBarColor = 
        ContextCompat.getColor(context, R.color. colorTesting)
 }

您可以执行一种根据itemId返回颜色的方法