Android基础-ActionBar和ToolBar的使用

文章目录

Kotlin搭配AndroidKtx,简直爽到爆。

1. ActionBar

  1. Activity 使用或继承App的Theme,
 <!-- Base application theme with ActionBar.重点是 DarkActionBar-->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

kotlin:

//在mainActivity里的Actionbar就这样获取
// ? 是空安全符号,有了它避免了NullPointerException

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.show()
        supportActionBar?.title = "Title"
        supportActionBar?.subtitle = "SubTitle"
        supportActionBar?.setIcon(android.R.drawable.ic_dialog_info)
        supportActionBar?.setLogo(android.R.drawable.ic_dialog_map)
    }

在这里插入图片描述

2. ToolBar

因为要使用toolBar 第一件事就是去掉Android系统本身默认的ActionBar

  1. 将Activity使用或者继承App的Theme改成NoActionBar
   <!-- Base application theme no  ActionBar. 重点是 NoActionBar-->
    <style name="NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
  1. 增加依赖,在build.gradle里添加对 appcompat的依赖

以下是Kotlin的依赖:

在这里插入图片描述
3. 在布局文件里使用ToolBar


在这里插入图片描述

  1. 写menu的xml文件
<?xml version ="1.0" encoding ="utf-8"?><!--  Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- "Mark Favorite", should appear as action button if possible -->
    <item
            android:id="@+id/action_favorite"
            android:icon="@android:drawable/btn_star_big_on"
            android:title="TitleFavorite"
            app:showAsAction="ifRoom"/>

    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="TitleSettings"
          app:showAsAction="never"/>

</menu>

在这里插入图片描述
5. 重写三个方法能完成对menu的所有操作

  override fun onResume() {
        super.onResume()
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.show()
        supportActionBar?.title = "Title"
        supportActionBar?.subtitle = "SubTitle"
        supportActionBar?.setIcon(android.R.drawable.ic_dialog_info)
        supportActionBar?.setLogo(android.R.drawable.ic_dialog_map)
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.actions_main, menu)
        return true
    }

    override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
        menu?.getItem(R.id.action_settings)?.title = "被更改的title"
        return super.onPrepareOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        when (item?.itemId) {
            R.id.action_favorite -> {
                Toast.makeText(applicationContext, "action_favorite",Toast.LENGTH_SHORT).show();
            }
            R.id.action_settings -> {
                Toast.makeText(applicationContext, "action_settings",Toast.LENGTH_SHORT).show();
            }
            else -> super.onOptionsItemSelected(item)
        }
        return true
    }

在这里插入图片描述

发布了100 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/panda_8/article/details/89702888
今日推荐