MaterialDesign 依赖库 implementation 'com.google.android.material:material:1.1.0' 在布局文件中加入 TooBar <androidx.appcompat.widget.Toolbar android:id="@+id/toolBar" android:layout_width="match_parent" android:layout_height="wrap_content" <!--其他属性设置--> /> 关于旧版的说明
旧版需要使用兼容包
compile 'com.android.support:appcompat-v7:23.1.1'
使用以下布局方法
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="标题" android:textSize="20sp"/> </android.support.v7.widget.Toolbar> 很多文章都是这么写的,此处代码也是拷贝的,但是在开发中出了一些问题,博主是没有成功运行,仅供参考,挂了请自行查阅资料,不做解释。这里主要介绍新版 ToolBar 的使用
在 MainActivity 中引用 Toolbar Toolbar toolbar = findViewById(R.id.toolBar); 使用 ToolBar 作为界面布局 toolbar.setTitle("AppBarLayoutTest"); setSupportActionBar(toolbar); 导包的时候导这个,不要导错了,否则会报错
import androidx.appcompat.widget.Toolbar;
添加自定义属性 按需添加自定义属性,可以修改的内容包括标题的文字、图标、颜色等。不详细介绍,官方文档里很详细。
官方文档:https://developer.android.com/reference/android/widget/Toolbar
添加菜单 构建菜单的布局文件 这里添加的 item 会按顺序显示在 ToolBar 上面。
showAsAction 属性:
always:总是显示 ifRoom:空间足够时显示 never:永不显示(收纳在右侧的三条横线那个更多按钮里) <?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/toolbar_setting" android:icon="@drawable/ic_setting" android:title="@string/toolbar_setting" app:showAsAction="always" /> <item android:id="@+id/toolbar_about" android:title="@string/toolbar_about" app:showAsAction="never" /> <item android:id="@+id/toolbar_exit" android:title="@string/toolbar_exit" app:showAsAction="never" /> </menu> 在主菜单中引用菜单的布局文件 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar, menu); return true; } 设置菜单点击事件 @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case android.R.id.home: drawerLayout.openDrawer(GravityCompat.START); break; case R.id.toolbar_setting: Toast.makeText(MainActivity.this, "Waiting for coding for setting", Toast.LENGTH_SHORT).show(); break; case R.id.toolbar_about: Toast.makeText(MainActivity.this, "Waiting for coding for about", Toast.LENGTH_SHORT).show(); break; case R.id.toolbar_exit: Toast.makeText(MainActivity.this, "Waiting for coding for exit", Toast.LENGTH_SHORT).show(); break; default: break; } return true; } AppBarLayout 使用 AppBarLayout 可以给 ToolBar 定义更多的内容,并且 TabLayout 一般也是嵌套在其内部。
...