安卓开发之Toolbar
根据官网的教程,发现实现与预期不一致,查看相关资料自己整理了一下(官网开发文档:https://developer.android.com/training/appbar/setting-up.html)
1,初识 Toolbar
Toolbar 是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google 非常推荐大家使用 Toolbar 来作为Android客户端的导航栏,以此来取代之前的 Actionbar 。与 Actionbar 相比,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在Activity的顶部,而是可以放到界面的任意位置。(下图来自官网)
2,使用 Toolbar
----最终效果图:两个weChat图标可以改成搜索跟文件夹图标,点击overflow menu显示menu菜单列表
1) 首先,要使用Toolbar,需先关闭默认的actiobBar,所以使用AppThemeLightNoActionBar主题:
----在AndroidManifest.xml中更改主题为 android:theme="@style/AppThemeLightNoActionBar",其中引用的文件来自style.xml
AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?>android:theme="@style/AppThemeLightNoActionBar"> //修改主题
style.xml如下:
2) 其次,在src/res中若不存在menu文件夹,那么需要手动添加,添加menu文件夹的方式:新建一个安卓的资源仓库,选择menu,确定。
----之后会出现一个menu文件夹,在此文件夹的基础上,新建menu resource file,如:base_toolbar_menu.xml
---以下为base_toolbar_menu.xml内容
<?xml version="1.0" encoding="utf-8"?>
----其中对应的string.xml如下:
searchActivity menu_search menu_notifications item_01 item_02
3) 最后在对应的.java文件中修改toolbar,自己建立的Toolbar中没有Overflow Menu,需要自己新建Menu布局,在Activity中通过onCreateOptionsMenu(Menu menu)自己加载它。
public class WeChatActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_we_chat); Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); myToolbar.setTitle("WeChat");//设置主标题 // myToolbar.setSubtitle("Subtitle");//设置子标题 } @Override
//此处应注意 public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.base_toolbar_menu,menu); return super.onCreateOptionsMenu(menu); } }
Tip:还可以修改ToolBar隐藏菜单的弹出位置和颜色,弹出按钮的样式,这里简单将弹出的menu置于toolbar下方:
----在style.xml的相应主题中加入如下