1 自定义toolbar XML 文件
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar_base" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:fitsSystemWindows="true" app:navigationIcon="@mipmap/back" android:minHeight="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <TextView android:id="@+id/toolbar_title" style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="66" android:textSize="21sp" /> <TextView android:id="@+id/toolbar_menu_title" style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_marginRight="10dp" android:text="55" android:textSize="16sp" /> </android.support.v7.widget.Toolbar>
navigationIcon为自定义的返回图标
2 定义style 中的Theme
<style name="AppThemeBase" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimary</item> <item name="colorAccent">@color/colorPrimary</item> <!--<item name="android:windowTranslucentNavigation">false</item>--> <!--<item name="android:windowTranslucentStatus">false</item>--> <!--<item name="android:background">@null</item>--> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>那三个注释掉的自己尝试下吧3 在BaseAvtivity 中 找到你自定义的toolbar XML 并找到里面的控件,对外提供get 方法和 setText 方法 随便封,private Toolbar mToolbar; //标题 private TextView toolbarTitle; private TextView toolbarMenuTitle; @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(LayoutInjectUtil.getInjectLayoutId(this)); initToolbars(); } protected void initToolbars() { mToolbar = findViewById(R.id.toolbar_base); toolbarTitle = findViewById(R.id.toolbarTitle); toolbarMenuTitle = findViewById(R.id.toolbarMenuTitle); if (mToolbar != null) { setSupportActionBar(mToolbar); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); mToolbar.setOnMenuItemClickListener(this); } } public Toolbar getmToolbar() { return mToolbar; } public void setmToolbar(Toolbar mToolbar) { this.mToolbar = mToolbar; } public TextView getToolbarTitle() { return toolbarTitle; } public void setToolbarTitle(String toolbarTitle) { this.toolbarTitle.setText(toolbarTitle); } public TextView getToolbarMenuTitle() { return toolbarMenuTitle; } public void setToolbarMenuTitle(String toolbarMenuTitle) { this.toolbarMenuTitle.setText(toolbarMenuTitle); } public void showBack(boolean isShow) { getSupportActionBar().setDisplayHomeAsUpEnabled(isShow); getSupportActionBar().setDisplayShowHomeEnabled(isShow); }4 在你的自定义的Activity 中集成你的BaseActivity@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; default: break; } return super.onOptionsItemSelected(item); }}//动态设置返回按钮的样式getmToolbar().setNavigationIcon(R.mipmap.refresh);
//设置toolbar的标题 setToolbarTitle("标题");//设置toolbar右侧的选项按钮问题 setToolbarMenuTitle("设置");//设置其点击事件 getToolbarMenuTitle().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); //设置返回按钮的点击事件,!!!!如果未设置会默认触发BaseAvtivity 中的onOptionsItemSelected 方法 不要试图在子类中重写getmToolbar().setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "6666", Toast.LENGTH_SHORT).show(); }});onOptionsItemSelected方法,很烦