Toolbar(去除默认的actionBar主题,使用Toolbar)
程序员文章站
2022-08-12 20:13:59
前面说了,Android默认每个界面都有ActionBar,而我们项目使用Toolbar,所以要给Activity配置去除ActionBar的主题,前面我们已经配置了,如果大家还没配置要配置了,才能使用Toolbar,不然会因为冲突,而崩溃。如果没有这个依赖,则需要添加 //material design依赖 //AppBarLayout在这里面 implementation 'com.google.android.material:material:1.0.0'/** * 通用...
前面说了,Android默认每个界面都有ActionBar,而我们项目使用Toolbar,所以要给Activity配置去除ActionBar的主题,前面我们已经配置了,如果大家还没配置要配置了,才能使用Toolbar,不然会因为冲突,而崩溃。
如果没有这个依赖,则需要添加
//material design依赖
//AppBarLayout在这里面
implementation 'com.google.android.material:material:1.0.0'
/**
* 通用标题界面
*/
public class BaseTitleActivity extends BaseCommonActivity {
/**
* 标题控件
*/
@BindView(R.id.toolbar)
protected Toolbar toolbar;
@Override
protected void initView() {
super.initView();
//初始化Toolbar
setSupportActionBar(toolbar);
//是否显示返回按钮
if (isShowBackMenu()) {
showBackMenu();
}
}
/**
* 显示返回按钮
*/
protected void showBackMenu() {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
/**
* 是否显示返回按钮
* @return
*/
protected boolean isShowBackMenu() {
return true;
}
/**
* 按钮点击回调事件
*
* @param item
* @return
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
//Toolbar返回按钮点击
finish();
break;
}
return super.onOptionsItemSelected(item);
}
// @Override
// public void setTitle(int titleId) {//这个方法可以不用写,因为已经继承了
// super.setTitle(titleId);
// }
}
通用的tool_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- AppBarLayout主要用来实现标题折叠功能
elevation:阴影高度 0dp:表示去掉阴影
?attr/actionBarSize:表示取找这个属性的值,如果找到就用这个actionBarSize值
-->
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:theme="@style/AppTheme.AppBarOverlay"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:elevation="0dp">
<!-- Toolbar控件
PupupOverlay:翻译:折叠覆盖
注意:上面
style="@style/AppTheme.AppBarOverlay" 错误的
(AppBarLayout正确写法是:theme="@style/AppTheme.AppBarOverlay" 注意是:theme)
app:popupTheme="@style/AppTheme.PopupOverlay"
(这个是toolbar的正确写法 app命名的)
app:titleTextColor:标题字体颜色 app命名
这里把 app:titleTextColor="@color/white"去掉(这个只能更改单个,不能更改返回箭头的颜色)
所以把AppBarLayout的style变为android:theme,全称是: android:theme="@style/AppTheme.AppBarOverlay"
-->
<androidx.appcompat.widget.Toolbar
android:background="?attr/colorPrimary"
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</com.google.android.material.appbar.AppBarLayout>
上面用到的 theme style(在style.xml添加)
<!-- AppBarLayout样式
这个AppBarLayout样式显示的是暗一点的颜色,那么里面的文字就会显示亮一点的颜色
--> 用theme引用
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<!--toolbar样式--> 用app:popupTheme引用
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
最后在其他Activity xml文件中引入即可
<include layout="@layout/tool_bar"/>
本文地址:https://blog.csdn.net/qq_40082314/article/details/108729822