Android Material Design 应用开发:Toolbar 冲突解决方案

在 Android 应用开发中使用 Material Design 的 Toolbar 时,可能会遇到以下错误信息:

java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

这个错误信息表明你的 Activity 已经存在一个由窗口装饰提供的 ActionBar,而你又试图使用 Toolbar 来代替它。

解决方案

有以下几种方法可以解决这个问题:

  1. 修改 AppTheme 父主题:

    styles.xml 文件中,将 AppTheme 的父主题改为 Theme.AppCompat.Light,即将 parent="Theme.AppCompat.Light.DarkActionBar" 修改为 parent="Theme.AppCompat.Light"

  2. 设置 windowActionBar 属性为 false

    styles.xml 文件中,将 AppThemeparent 主题中的 windowActionBar 属性设置为 false,即添加 <item name="windowActionBar">false</item>

  3. 注释或删除 setSupportActionBar 方法:

    MainActivity.kt 文件中,将 setSupportActionBar(binding.toolbar) 注释掉或删除。

代码示例

styles.xml

<resources>
    <string name="app_name">MaterialTest</string>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">@color/colorPrimary</item>
        <item name="android:windowBackground">@color/colorPrimaryDark</item>
        <item name="android:navigationBarColor">@color/colorPrimary</item>
    </style>
</resources>

MainActivity.kt

package com.example.materialtest

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.materialtest.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // setSupportActionBar(binding.toolbar)
    }
}

通过以上方法,就可以解决 Toolbar 冲突问题,并在你的 Android 应用中成功使用 Toolbar。

Android Material Design 应用开发:Toolbar 冲突解决方案

原文地址: https://www.cveoy.top/t/topic/qwtd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录