Toolbar(去除默認的actionBar主題,使用Toolbar)

前面說了,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"/>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容