網站首頁 編程語言 正文
一、概念
默認顯示的 ActionBar 來自于主題指定(Manifest中application所指定,activity也會單獨指定),由于不能實現 Materrial Design 效果已不再建議使用。
二、使用
2.1 xml
<androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" />
2.2 menu
右鍵res目錄→New→Directory→創建一個menu文件夾。右鍵Menu文件夾→New→Menu resource file→創建一個toolbar.xml文件。
xmls:app | 指定命名空間,許多新特性(app:開頭的)老系統(android:開頭的)中不存在,是為了兼容。 |
app:showAsAction | 指定選項顯示位置:always永遠顯示;ifRoom有空位就顯示;never只在菜單中顯示。Toolbar中只顯示圖標,菜單中只顯示文字。 |
指定選項顯示位置:always永遠顯示;ifRoom有空位就顯示;never只在菜單中顯示。Toolbar中只顯示圖標,菜單中只顯示文字。
<?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/back" android:icon="@mipmap/ic_launcher" android:title="Back" app:showAsAction="always" /> <item android:id="@+id/delete" android:icon="@mipmap/ic_launcher" android:title="Delete" app:showAsAction="ifRoom" /> <item android:id="@+id/settings" android:icon="@mipmap/ic_launcher" android:title="Settings" app:showAsAction="never" /> </menu>
2.3 Manifest
- Tollbar默認顯示的標題是<application>節點的label,如果<activity>節點有指定自己的label就顯示自己的,一般我們會自行在 xml 中對 Tollbar 的 title 進行自定義。
- <activity>節點的 theme 沒有單獨指定 NoActionBar 的主題,那么<application>節點的 theme 就要指定NoActionBar的主題,否則關聯Toolbar 會報錯。
2.4 Activity
onCreate() {
//關聯Toolbar(Manifest沒有使用NoActionbar的主題會報錯)
val toolbar = findViewById<Toolbar>(R.id.toolbar)
setSupportActionBar(toolbar)
}
//加載菜單
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.back -> Toast.makeText(this, "點擊了back", Toast.LENGTH_SHORT).show()
R.id.delete -> Toast.makeText(this, "點擊了delete", Toast.LENGTH_SHORT).show()
R.id.settings -> Toast.makeText(this, "點擊了settings", Toast.LENGTH_SHORT).show()
}
return true
}
原文鏈接:https://blog.csdn.net/HugMua/article/details/127781048
相關推薦
- 2023-03-21 C++將字符串格式化的幾種方式總結_C 語言
- 2022-06-29 python人工智能tensorflow常用激活函數Activation?Functions_pyt
- 2022-03-14 sql 排序order by重復數據問題
- 2022-05-27 C++?超詳細深入分析單例模式_C 語言
- 2022-06-14 Docker安裝運行SRS的過程記錄_docker
- 2022-05-12 基于nginx反向代理獲取用戶真實Ip地址詳解_nginx
- 2022-10-18 C/C++函數指針深入探究_C 語言
- 2022-08-15 Docker常見用法
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支