Android 在BottomNavigationView中分别更改项目颜色

Android 在BottomNavigationView中分别更改项目颜色,android,kotlin,bottomnavigationview,Android,Kotlin,Bottomnavigationview,我正在寻找一种在我的BottomNavigationView中以编程方式更改项目颜色的方法 我发现了如何更改图标颜色,我做了如下操作: fun setMenu(selected: Int) { bottomNavigationMenu?.let { it.menu.findItem(R.id.bottom_menu_home).icon .setColorFilter(getMenuColor(R.id.bottom_menu_home,

我正在寻找一种在我的
BottomNavigationView
中以编程方式更改项目颜色的方法

我发现了如何更改图标颜色,我做了如下操作:

fun setMenu(selected: Int) {
    bottomNavigationMenu?.let {
        it.menu.findItem(R.id.bottom_menu_home).icon
                .setColorFilter(getMenuColor(R.id.bottom_menu_home, selected), PorterDuff.Mode.SRC_ATOP)
        // more items
        it.menu.findItem(R.id.bottom_menu_fidelity)?.icon
                ?.setColorFilter(getMenuColor(R.id.bottom_menu_fidelity, selected), PorterDuff.Mode.SRC_ATOP)
    }
}

fun getMenuColor(id: Int, selected: Int): Int {
    if (Singletons.restaurant.title.isBlank())
        getRestaurant()
    else {
        if (id == selected) return (Singletons.restaurant.color)
        else return ContextCompat.getColor(this, R.color.grey7E)
    }
    return (0)
}
现在我正在寻找如何更改标题颜色。 我在找像这样的东西

it.menu.findItem(R.id.bottom_menu_home).title // etc
但是我找不到一个正确的函数来实现它

以下是main_bottom_menu.xml中的我的项目:


奇怪的是,文本颜色等于我的
colorPrimary
,因此必须将其设置在某个位置。 目标是(从API)动态设置颜色。
知道我的标题颜色设置在哪里吗?

要设置所有项目的颜色,只需调用
BottomNavigationView
实例即可

要单独设置它们,可以使用
SpannableString

val titleSpannable = SpannableString("title")

titleSpannable.setSpan(
    ForegroundColorSpan(Color.parseColor("#ffffff")),
    0,
    titleString.length,
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

bottomNavigationView.menu.findItem(R.id.your_item_id).title = titleSpannable
val titleSpannable = SpannableString("title")

titleSpannable.setSpan(
    ForegroundColorSpan(Color.parseColor("#ffffff")),
    0,
    titleString.length,
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

bottomNavigationView.menu.findItem(R.id.your_item_id).title = titleSpannable