前面說了,Android默認每個界面都有ActionBar,而我們項目使用Toolbar,所以要給Activity配置去除ActionBar的主題,前面我們已經(jīng)配置了,如果大家還沒配置要配置了,才能使用Toolbar,不然會因為沖突,而崩潰。
如果沒有這個依賴,則需要添加
//material design依賴
//AppBarLayout在這里面
implementation 'com.google.android.material:material:1.0.0'
/**
* 通用標(biāo)題界面
*/
public class BaseTitleActivity extends BaseCommonActivity {
/**
* 標(biāo)題控件
*/
@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;
}
/**
* 按鈕點擊回調(diào)事件
*
* @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) {//這個方法可以不用寫,因為已經(jīng)繼承了
// super.setTitle(titleId);
// }
}
通用的tool_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- AppBarLayout主要用來實現(xiàn)標(biāo)題折疊功能
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:標(biāo)題字體顏色 app命名
這里把 app:titleTextColor="@color/white"去掉(這個只能更改單個,不能更改返回箭頭的顏色)
所以把AppBarLayout的style變?yōu)閍ndroid: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"/>