少年乘勇气,百战过乌孙。这篇文章主要讲述android中使用toolbar相关的知识,希望能为你提供帮助。
系统默认使用的是ActionBar,就是界面中的标题栏,但是由于ActionBar设计的原因,被限定只能位于活动的顶部,从而不能实现Material Design效果,所以官方建议使用Toolbar替换掉ActionBar
下面来看一下,如果使用Toolbar
1、首先先去掉默认的ActionBar,修改styles.xml,这个styles.xml是项目自带的,位于src/main/res/values目录下,注意看红色内容为我添加的内容:
< resources> < !-- Base application theme. --> < 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> < style name="AppTheme2" 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> < /resources>
AppTheme风格是系统默认的,也就是带ActionBar的
AppTheme2风格是我添加的,是不带ActionBar的,区别就是把parent属性修改为Theme.AppCompat.Light.NoActionBar
当然如果整个项目都不需要ActionBar,直接修改默认的AppTheme风格就可以了
修改androidManifest.xml文件,这里我截了图,没有粘代码:
文章图片
如果希望整个项目都使用AppTheme2风格,直接按我截图的方式修改即可,如果只是部分Activity,可以专门为指定Activity指定android:theme属性
2、在Activity活动上添加Toolbar
文章图片
添加好toolbar控件,指定好id,然后需要在java代码中注册一下:
在onCreate方法中添加如下代码:
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);
如果需要不显示标题,并且添加返回按钮,修改上面的代码:
@Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==android.R.id.home) { finish(); } return super.onOptionsItemSelected(item); }@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main36); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); } }); }
上面的代码重写了onOptionsItemSelected方法,用于响应返回按钮事件
3、为Toolbar添加操作按钮
这个添加按钮其实就是创建 option menu,这个我在之前的文章有讲:Android中创建option menu
这里我再创建一个,在src/main/res/menu目录下创建menu资源文件menu1.xml:
< ?xml version="1.0" encoding="utf-8"?> < menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> < item android:id="@+id/editItem" android:icon="@android:drawable/ic_menu_edit" android:title="编辑" app:showAsAction="always" /> < item android:id="@+id/deleteItem" android:icon="@android:drawable/ic_menu_delete" android:title="删除" app:showAsAction="always" /> < item android:id="@+id/helpItem" android:icon="@android:drawable/ic_menu_help" android:title="帮助" app:showAsAction="always" /> < /menu>
注意这个app:showAsAction属性,设成always是指显示在标题栏中,设为ifRoom是指空间够就显示在标题栏中,设为never是显示在菜单栏中
然后在java代码中注册这个菜单,并且响应对应按钮事件,最终代码如下:
public class Main36Activity extends AppCompatActivity {@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu4,menu); return true; }@Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==android.R.id.home) { finish(); } else if(item.getItemId()==R.id.editItem) { Toast.makeText(Main36Activity.this, "编辑操作", Toast.LENGTH_SHORT).show(); } else if(item.getItemId()==R.id.deleteItem) { Toast.makeText(Main36Activity.this, "删除操作", Toast.LENGTH_SHORT).show(); } else if(item.getItemId()==R.id.helpItem) { Toast.makeText(Main36Activity.this, "帮助操作", Toast.LENGTH_SHORT).show(); } return super.onOptionsItemSelected(item); }@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main36); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); } }
展示效果:
文章图片
【android中使用toolbar】
推荐阅读
- Android MVP 架构一 View与Presenter
- Spring Boot MyBatis注解(@MapperScan和@Mapper)
- 移动端车牌识别为优质app而存在
- 微信跳转外部浏览器下载app
- Android学习之基础知识十三—网络编程的最佳实践
- 设计原理及其重要性
- 因果关系–探索色彩心理学
- 展示设计与视觉叙事艺术
- 品牌重塑策略的注意事项