• 系统组件:工具栏Toolbar


      Toolbar是Api21引入的一个控件,v7包含有它的控件,可兼容5.0以下系统,它是用来替代Actionbar,官方推荐Toolbar,它作为一个控件,比Actionbar更灵活也更强大。

      官方文档描述:

        

        Toolbar的组成分为5部分,分别是A navigation button,A branded logo image,A title and subtitle,One or more custom views,An action menu.

      

      Toolbar的使用:

        0.修改App使用的主题,使用没有Actionbar的主题,否则会出错。

     1 <resources>
     2 
     3     <!-- Base application theme. -->
     4     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
     5         <!-- Customize your theme here. -->
     6         <item name="colorPrimary">@color/colorPrimary</item>
     7         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
     8         <item name="colorAccent">@color/colorAccent</item>
     9     </style>
    10 
    11 </resources>

        

        1.在布局文件中使用控件,注意为了兼容低版本,使用android.support.v7.widget.Toolbar.

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:tools="http://schemas.android.com/tools"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:id="@+id/container"
     7     tools:context="com.aellenlei.toolbardemo.MainActivity">
     8 
     9 
    10     <android.support.v7.widget.Toolbar
    11         android:id="@+id/toolbar"
    12         android:layout_width="match_parent"
    13         android:layout_height="wrap_content"
    14         android:background="#ff0004"/>
    15 
    16 
    17     <TextView
    18         android:layout_width="wrap_content"
    19         android:layout_height="wrap_content"
    20         android:text="Hello World"
    21         android:layout_below="@+id/toolbar"/>
    22 </RelativeLayout>

        2.获取Toolbar对象,设置Toolbar的相关属性,

        

        3.将Toolbar添加到Actionbar位置

        4.Toolbar调用onMenuItemClick设置监听事件

      eg:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <menu xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:app="http://schemas.android.com/apk/res-auto">
     4 
     5     <item android:id="@+id/action_edit"
     6         android:title="编辑"
     7         android:orderInCategory="80"
     8         android:icon="@android:drawable/ic_menu_edit"
     9         app:showAsAction="ifRoom" />
    10 
    11     <item android:id="@+id/action_share"
    12         android:title="分享"
    13         android:orderInCategory="90"
    14         android:icon="@android:drawable/ic_menu_share"
    15         app:showAsAction="ifRoom" />
    16 
    17     <item android:id="@+id/action_settings"
    18         android:title="settings"
    19         android:orderInCategory="100"
    20         app:showAsAction="never"/>
    21 
    22 </menu>
    Toolbar的Items菜单项
     1 package com.aellenlei.toolbardemo;
     2 
     3 import android.os.Bundle;
     4 import android.support.design.widget.Snackbar;
     5 import android.support.v7.app.AppCompatActivity;
     6 import android.support.v7.widget.Toolbar;
     7 import android.view.Menu;
     8 import android.view.MenuItem;
     9 
    10 public class MainActivity extends AppCompatActivity {
    11 
    12     private Toolbar.OnMenuItemClickListener onMenuItemClickListener = new Toolbar.OnMenuItemClickListener() {
    13         @Override
    14         public boolean onMenuItemClick(MenuItem item) {
    15 
    16             switch (item.getItemId()) {
    17                 case R.id.action_edit:
    18                     Snackbar.make(findViewById(R.id.container), "edit", Snackbar.LENGTH_SHORT).show();
    19                     break;
    20                 case R.id.action_share:
    21                     Snackbar.make(findViewById(R.id.container), "share", Snackbar.LENGTH_SHORT).show();
    22                     break;
    23                 case R.id.action_settings:
    24                     Snackbar.make(findViewById(R.id.container), "setting", Snackbar.LENGTH_SHORT).show();
    25                     break;
    26             }
    27 
    28 
    29             return true;
    30         }
    31     };
    32 
    33     @Override
    34     protected void onCreate(Bundle savedInstanceState) {
    35         super.onCreate(savedInstanceState);
    36         setContentView(R.layout.activity_main);
    37 
    38         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    39         toolbar.setLogo(R.mipmap.ic_launcher);
    40         toolbar.setTitle("title");
    41         toolbar.setSubtitle("subtitle");
    42         toolbar.setNavigationIcon(R.mipmap.ic_launcher);
    43 
    44         setSupportActionBar(toolbar);
    45 
    46 
    47         toolbar.setOnMenuItemClickListener(onMenuItemClickListener);
    48 
    49     }
    50 
    51     @Override
    52     public boolean onCreateOptionsMenu(Menu menu) {
    53         getMenuInflater().inflate(R.menu.main, menu);
    54         return super.onCreateOptionsMenu(menu);
    55     }
    56 
    57 
    58 }
    实例化Toolbar

       效果:

     

      

  • 相关阅读:
    linux eclipse cdt make error 127
    centos 安装网络错误
    c++ string 结束符‘00’
    北京市工资交税情况
    gprof参数说明及常见错误
    【转】Eclipse Plugin 在 Console上打印出message
    C++做client Java做客户端传送数据
    word统计章节字数
    【转】Profiling application LLC cache misses under Linux using Perf Events
    【转】eclipse插件开发,调试运行,导出与安装
  • 原文地址:https://www.cnblogs.com/enjoy-coding/p/4966873.html
Copyright © 2020-2023  润新知