在 kotlin 中设置工具栏文本颜色

Set toolbar text color in kotlin

我一直在尝试更改工具栏中的文本颜色,但我没有任何进展,我已经尝试了堆栈溢出的许多答案,但要么它不起作用,要么应用程序在这一行崩溃 setSupportActionBar(toolbar).

这是 Kotlin activity:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_chat)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
    supportActionBar?.title = intent.getStringExtra(AppConstants.GROUP_NAME)
}

和布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EEEEEE"
tools:context=".ChatActivity">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view_messages"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toTopOf="@id/relativeLayout_message"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />    

提前致谢。

您说您的应用程序在这一行崩溃:setSupportActionBar(toolbar)
但是在 onCreate() 方法中没有这一行。
如果您的 activity 中确实有工具栏,请使用它来更改其文本颜色:

toolbar.setTitleTextColor(Color.WHITE)

或您喜欢的任何颜色。

如果您想在所有应用程序上更改它,您可以使用 actionBar styling documentation 中解释的样式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.Holo">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>
        <item name="android:actionMenuTextColor">@color/actionbar_text</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
           parent="@style/Widget.Holo.ActionBar">
        <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
    </style>

    <!-- ActionBar title text -->
    <style name="MyActionBarTitleText"
           parent="@style/TextAppearance.Holo.Widget.ActionBar.Title">
        <item name="android:textColor">@color/actionbar_text</item>
    </style>

    <!-- ActionBar tabs text styles -->
    <style name="MyActionBarTabText"
           parent="@style/Widget.Holo.ActionBar.TabText">
        <item name="android:textColor">@color/actionbar_text</item>
    </style>
</resources>

另一方面,如果您想根据您所在的 Activity/Fragment/View 自定义操作栏,您应该:

  • 将您的应用样式更改为没有操作栏的变体,例如 "Theme.AppCompat.Light.NoActionBar
  • 将工具栏添加到您的 activity 布局
  • 使用 setSupportActionBar(toolbar)
  • 将该工具栏设置为 actionBar

完成此操作后,您可以参考工具栏来更改文本颜色并通过 XML 或以编程方式完全自定义 ActionBar