作为Android客户端的导航栏。与 Actionbar 相比,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在Activity的顶部,而是可以放到界面的任意位置。
在AndroidManifest.xml中更改主题为 android:theme="@style/AppThemeLightNoActionBar",其中引用的文件来自style.xml
style.xml-
android:background="#ffff00"-背景色 app:navigationIcon="@drawable/baseline_arrow_back_24"-导航栏图标 app:title="标题" -导航栏标题文本内容 app:titleTextColor="#ff0000" - 标题文本颜色 app:titleMarginStart="90dp" - 标题距离左边的间距 app:setTitleTextAppearance-标题字体大小 app:subtitle="子标题" -子标题 app:subtitleTextColor="#00ffff" -子标题颜色 app:setSubtitleTextAppearance -子标题字体大小 app:logo="@mipmap/ic_launcher" - 图片
- <menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
- <item android:id="@+id/action_search"
- android:title="Search"
- android:icon="@mipmap/ic_search"
- app:showAsAction="ifRoom"/>
- <item android:id="@+id/action_notifications"
- android:title="notifications"
- android:icon="@mipmap/ic_notifications"
- app:showAsAction="ifRoom"/>
- <item android:id="@+id/action_settings"
- android:title="@string/action_settings"
- android:orderInCategory="100"
- android:icon="@mipmap/ic_launcher"
- app:showAsAction="never"/>
- </menu>
app:showAsAction=”ifRoom”/”never”,app是自定义的命名空间,因为我们的activity继承的是AppCompatActivity,是support v7包的,并不是原生sdk内部的,因此不能使用android:showAsAction,否则会报错。然后ifRoom表示有空间则显示,never表示从不显示,而是会通过overflowwindow显示。
- @Overridepublic boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_main, menu);
- return true;
- }
- //设置导航图标、添加菜单点击事件要在setSupportActionBar方法之后
- setSupportActionBar(toolbar);
- toolbar.setNavigationIcon(R.mipmap.ic_drawer_home);
-
- toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.action_search:
- Toast.makeText(MainActivity.this, "Search !", Toast.LENGTH_SHORT).show();
- break;
- case R.id.action_notifications:
- Toast.makeText(MainActivity.this, "Notificationa !", Toast.LENGTH_SHORT).show();
- break;
- case R.id.action_settings:
- Toast.makeText(MainActivity.this, "Settings !", Toast.LENGTH_SHORT).show();
- break;
- }
- return true;
- }
- });
1,通过添加样式改变
- <resources>
- <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
- ...
- <item name="android:textColorSecondary">#ffffff</item>
- </style>
- </resources>
2,其他样式修改
- <style name="ToolbarPopupTheme" parent="@style/ThemeOverlay.AppCompat.Dark">
- <item name="android:colorBackground">#000000item>
- <item name="actionOverflowMenuStyle">@style/OverflowMenuStyleitem>
- style>
-
- <style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
- <item name="overlapAnchor">falseitem>
- style>