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

时间:2018-10-13 14:54:27

标签: android kotlin android-toolbar

我一直在尝试更改工具栏中的文本颜色,但是我什么也没碰到,我已经尝试了许多来自堆栈溢出的答案,但要么不起作用,要么应用程序在此行setSupportActionBar(toolbar)崩溃

这是Kotlin活动:

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" />    

谢谢。

2 个答案:

答案 0 :(得分:1)

如果要在所有应用程序上进行更改,可以按照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>

另一方面,如果要根据所处的“活动/片段/视图”自定义操作栏,则应该:

  • 将您的App样式更改为不带操作栏的变体,例如"Theme.AppCompat.Light.NoActionBar
  • 在活动布局中添加工具栏
  • 使用setSupportActionBar(toolbar)将该工具栏设置为actionBar

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

答案 1 :(得分:0)

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

toolbar.setTitleTextColor(Color.WHITE)

或您喜欢的任何颜色。