Android Material Design Toolbar

      Toolbar和ActionBar的用途一样。更准确的说Toolbar是ActionBar的升级版。ActionBar相信大家不会陌生了,没记错的话是在Android 3.0引入的;Toolbar则是随着Material Design一起出道的,那是在2014年Google I/O大会上重磅推出的一套全新的界面设计语言-------Material Design,然而到了2015年的Google I/O大会上谷歌有推出一个Design Support库,这个库将Material Design中很多具有代表性的控件和效果进行了封装,为的就是让开发者们简单点、轻松点的开发。

      Toolbar简单的使用:三步足矣。。。。

      第一步:很明显,谷歌已经告诉我们了,Toolbar就是拿来替换ActionBar的,那好,找到/res/values/styles.xml,找到<stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar">,parent改为parent="Theme.AppCompat.Light.NoActionBar",当然,你也可以改为parent="Theme.AppCompat.NoActionBar",这两者的区别是,parent="Theme.AppCompat.Light.NoActionBar"表示的是淡色主题,而parent="Theme.AppCompat.NoActionBar"表示是深色主题。这里我们改为parent="Theme.AppCompat.Light.NoActionBar"深色主题,来张图更清楚

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

       第二步:布局文件设置,直接贴代码。

 
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="com.xhm.demo.toolbarproject.ToolbarActivity">   <android.support.v7.widget.Toolbar  android:id="@+id/toolbar"  android:layout_width="match_parent"  android:layout_height="?attr/actionBarSize"  android:background="?attr/colorPrimary"  android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"  android:popupTheme="@style/ThemeOverlay.AppCompat.Light">   </android.support.v7.widget.Toolbar> </LinearLayout> 

这里的高度设置为ActionBar的高度,也可以这么来设置android:minHeight="?attr/actionBarSize" 。

       第三步:在MainActivity.java中使用Toolbar。

public class ToolbarActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_toolbar);
        Toolbar toolbar=(Toolbar) findViewById(R.id.toolbar);
        //setSupportActionBar方法将Toolbar实例传入
        //其实就是Toolbar替换Actionbar 
        setSupportActionBar(toolbar);
    }
}

注意:使用Toolbar要继承AppCompatActivity,不是继承Activity(宝宝在这掉坑了,不希望大家也掉下来快哭了),不信你看

效果图:

        真正的Toolbar没这么简单,也很美观,常用功能、点击事件走起:

修改标题:在Androidmanifest.xml中有个android:label,这货是可以修改Toolbar显示的文字。没有指定的话,就默认为应用名称。

mToolbar.setTitle("My Title");// 标题的文字需在setSupportActionBar之前,不然会无效(标题的第二种改法,在Java代码中改)

android:label="Toolbar"

        让Toolbar变得丰富起来,就要添加按钮。点击res右键/new/Directory,创建一个 menu文件夹,点击menu文件夹右键, new /Menu /resource file,创建一个toolbar.xml文件。代码如下:

 

 
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto">   <item  android:id="@+id/delete"  android:icon="@drawable/ic_delete"  android:title="Delete"  app:showAsAction="ifRoom"/>   <item  android:id="@+id/share"  android:icon="@drawable/ic_share_black"  android:title="Share"  app:showAsAction="always"/>   <item  android:id="@+id/more"  android:icon="@drawable/ic_more"  android:title="More"  app:showAsAction="always"/>  </menu>

 

 

 

可以看到<item>标签这里是用来定义action按钮,icon用于指定按钮的图标,title用于指定按钮的文字。关键的是使用app:showAsAction来指定按钮的显示位置,之所以使用来命名空间,同样是为了能兼容低版本系统,showAsAction主要有三种值可选,always表示永远显示在Toolbar中,如果屏幕空间不够则不显示;ifRoom表示屏幕空间足够的情况下显示在Toolbar中,不够的话就显示在菜单当中;never则表示永远显示在菜单当中。注意:Toolbar中的按钮只会显示图标,菜单中的按钮只会显示文字。

public class ToolbarActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_toolbar);
        Toolbar toolbar=(Toolbar) findViewById(R.id.toolbar);
        //setSupportActionBar方法将Toolbar实例传入
        //其实就是Toolbar替换Actionbar
        setSupportActionBar(toolbar);
    }

    /**
     * 加载toolbar.xml菜单文件
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.toolbar,menu);
        return true;
    }

    /**
     * Toolbar按钮点击事件处理
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.more:
                Toast.makeText(ToolbarActivity.this,
                        "more", Toast.LENGTH_SHORT).show();
                break;
            case R.id.delete:
                Toast.makeText(ToolbarActivity.this,
                        "delete", Toast.LENGTH_SHORT).show();
                break;
            case R.id.share:
                Toast.makeText(ToolbarActivity.this,
                        "share", Toast.LENGTH_SHORT).show();
                break;
        }
        return true;
    }
}

效果图:

 

Toolbar的强大更多的是和其他的控件一起使用,比如Toolbar和侧滑菜单DrawerLayout,

Android Material Design wraerlayout
 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值