码迷,mamicode.com
首页 > 其他好文 > 详细

ToolBar使用以及使用中的问题

时间:2016-02-29 19:51:46      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

时间:2015年12月28日12:01:22

如何使用toolbar?
    基础使用步骤:
     1.style
      2.layout
      3.java

      a.style调整的地方主要为style.xml,新增加一个style,这里name叫做:AppTheme.Base,为了让原本的actionbar隐藏起来,所以写为:

          
  1. <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
  2. //或者是添加item
  3. <item name="windowActionBar">false</item>
  4. <item name="windowNoTitle">true</item>
  5. //再将style-v21stylesAppThemeparent修改为AppTheme.Base


      b.layout中添加Toolbar组件,请记得用 support v7 里的 toolbar,不然然只有 API Level 21 也就是 Android 5.0 以上的版本才能使用:

         
  1. <android.support.v7.widget.Toolbar
  2. android:id="@+id/toolbar"
  3. android:layout_height="?attr/actionBarSize"
  4. android:layout_width="match_parent" >
  5. </android.support.v7.widget.Toolbar>


      c.java代码中:
          
  1. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  2. setSupportActionBar(toolbar);


      d.添加toolbar的图标、标题、副标题、item:
          
  1. // App Logo
  2. toolbar.setLogo(R.drawable.ic_launcher);
  3. // Title
  4. toolbar.setTitle("My Title");
  5. // Sub Title
  6. toolbar.setSubtitle("Sub title");
  7. setSupportActionBar(toolbar);
  8. // Navigation Icon 要設定在 setSupportActionBar后才有作用
  9. // 否則會出現 back button样式( 一个箭头图标 )
  10. toolbar.setNavigationIcon(R.drawable.ab_android);
  11. // Menu item click 的監聽事件一樣要設定在 setSupportActionBar 才有作用
  12. toolbar.setOnMenuItemClickListener(onMenuItemClick);


       e.为menu设置item:
          在res/menu/menu_main.xml中设置menu的item:
     
          
  1. <menu xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:app="http://schemas.android.com/apk/res-auto"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. tools:context=".MainActivity">
  5. <item android:id="@+id/action_edit"
  6. android:title="@string/action_edit"
  7. android:orderInCategory="80"
  8. android:icon="@drawable/ab_edit"
  9. app:showAsAction="ifRoom" />
  10. <item android:id="@+id/action_share"
  11. android:title="@string/action_edit"
  12. android:orderInCategory="90"
  13. android:icon="@drawable/ab_share"
  14. app:showAsAction="ifRoom" />
  15. <item android:id="@+id/action_settings"
  16. android:title="@string/action_settings"
  17. android:orderInCategory="100"
  18. app:showAsAction="never"/>
  19. </menu>


          在Java代码中通过重写onCreateOptionMenu()方法加载menu_main.xml文件:
                   
  1. @Override
  2. public boolean onCreateOptionsMenu(Menu menu) {
  3. getMenuInflater().inflate(R.menu.menu_main, menu);
  4. return true;
  5. }

          
          创建ToolBar的监听器(OnMenuItemClickListener ):
        
  1. private Toolbar.OnMenuItemClickListener onMenuItemClick = new Toolbar.OnMenuItemClickListener() {
  2. @Override
  3. public boolean onMenuItemClick(MenuItem menuItem) {
  4. String msg = "";
  5. switch (menuItem.getItemId()) {
  6. case R.id.action_edit:
  7. msg += "Click edit";
  8. break;
  9. case R.id.action_share:
  10. msg += "Click share";
  11. break;
  12. case R.id.action_settings:
  13. msg += "Click setting";
  14. break;
  15. }
  16. if(!msg.equals("")) {
  17. Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
  18. }
  19. return true;
  20. }
  21. };

使用中的问题?
          a.可能在使用中会出现为item设置图标但是item必须在三个点 :) 展开后才能使用,这时需要将你写成的android:showAsAction="xxx",改写          成为app:showAsAction="xxx" .
          b.可能你按照a做了但是仍然还不行,查看一下是否将activity extends AppCompatActivity?如果没有就改写试试.

关于showAsAction:
          
ifRoom
如果空间不够则会显示在溢出列表中,否在显示在item上
never
永远不会显示在item上,仅显示在溢出列表中并且仅显示标题
always
无论是否溢出都现在item上
withText
要显示文本标题,但是可能会受空间的影响显示不全
collapseActionView
声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。一般要配合ifRoom一起使用才会有效果。

          




ToolBar使用以及使用中的问题

标签:

原文地址:http://www.cnblogs.com/yuzhongzheng/p/5228400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!