[Android]Toolbar 野性酷女 2024-03-27 09:05 56阅读 0赞 Toolbar是由AndroidX库提供的,它的强大之处在于,它不仅继承了ActionBar的所有功能,并且灵活度很高,可以配合其他控件完成一些Material Design的效果。 **使用Toolbar替代ActionBar** -------------------- 在themes的两个xml文件中, ![85a30c7548d84324a78ce82ab5435a06.png][] 都指定一个不带ActionBar的主题 Theme.MaterialComponents.DayNight.NoActionBar:表示浅色主题,它会将界面的主题颜色设成浅色,陪衬颜色设为深色。 Theme.MaterialComponents.NoActionBar:表示深色主题,它会将界面的主题颜色设成深色,陪衬颜色设为浅色。 ![14c489e7854447189d72d80db56ac0b3.png][] 修改activity\_main.xml的代码 <FrameLayout 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" tools:context=".MainActivity"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar1" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"//高度设置为actionBar的高度 android:background="?attr/colorPrimary"//背景颜色设置为colorPrimary android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"//单独将弹出的菜单项指定为浅色主题 /> /> 在MainActivity中添加 setSupportActionBar(toolbar) **Toolbar常用属性** -------------------- ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMzI0MDg2_size_16_color_FFFFFF_t_70] <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar2" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:title="主标题" app:subtitle="副标题" android:background="?attr/colorPrimary" app:logo="@drawable/ic_launcher_foreground" app:titleTextColor="@color/black" app:subtitleTextColor="@color/black" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> ![a1a870457a2245afb0395ad770aa0ec4.png][] **添加菜单选项** -------------------- res/menu/toolbar.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/backup"//按钮的id android:icon="@drawable/is_backup"//指定按钮的图标 android:title="Backup"//按钮的文字 app:showAsAction="always"//指定按钮的显示位置 /> <item android:id="@+id/delect" android:icon="@drawable/is_delete" android:title="Delect" app:showAsAction="ifRoom" /> <item android:id="@+id/settings" android:icon="@drawable/is_settings" android:title="Settings" app:showAsAction="never" /> </menu> showAsAction的属性: <table style="width:500px;"> <tbody> <tr> <td>showAsAction</td> <td></td> </tr> <tr> <td>always</td> <td>永远显示在Toolbar中,如果屏幕空间不够则不显示</td> </tr> <tr> <td>ifRoom</td> <td>表示屏幕空间足够的情况下显示在Toolbar中,不够的话就显示在菜单当中</td> </tr> <tr> <td>never</td> <td>表示永远显示在菜单当中</td> </tr> </tbody> </table> 注意:Toolbar中的action按钮只会显示图标,菜单中的action按钮只会显示文字。 **设置菜单的点击事件** -------------------- override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.toolbar,menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { when(item.itemId){ R.id.backup->Toast.makeText(this,"backup",Toast.LENGTH_SHORT).show() R.id.delect->Toast.makeText(this,"delect",Toast.LENGTH_SHORT).show() R.id.settings->Toast.makeText(this,"settings",Toast.LENGTH_SHORT).show() } return true } ![0109e04b3afc44288ac659346e68a0a7.png][] [85a30c7548d84324a78ce82ab5435a06.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/3a000d211fbc41329ee3c3c2c8fd1beb.png [14c489e7854447189d72d80db56ac0b3.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/7885005547574a37a09bbac3de017214.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMzI0MDg2_size_16_color_FFFFFF_t_70]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/14bf26c216184bdb8a4aff69e6cab3ea.png [a1a870457a2245afb0395ad770aa0ec4.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/f849d58313354b01b06db31b0f386653.png [0109e04b3afc44288ac659346e68a0a7.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/101fc9da2b4a47b6b02eb219f5506aeb.png
还没有评论,来说两句吧...