Loading

Android的ToolBar

 

ToolBar比ActionBar更加可控,自由。因此,Google 逐渐使用ToolBar来代替ActionBar。

使用ToolBar

1.要引入appCompat_v7支持

2.主题设置为NoActionBar

在style.xml文件中

 <style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!--ToolBar颜色-->
        <item name="colorPrimary">@color/colorBlack</item>
        <!--状态栏颜色-->
        <item name="colorPrimaryDark">@color/colorBlack</item>
        <!--窗口的背景色-->
        <item name="android:windowBackground">@color/colorWhite</item>
        <!--add searchView-->
        <item name="searchViewStyle">@style/MySearchView</item>
        <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>

    </style>


 

<style name="MySearchView" parent="Widget.AppCompat.SearchView"/>
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'


    compile 'com.android.support:appcompat-v7:21.0.3'
}

 

界面布局

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

请记得用 support v7 里的 toolbar,不然然只有 API Level 21 也就是 Android 5.0 以上的版本才能使用。


程序代码:

toolbar=(Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("主标题");
toolbar.setSubtitle("副标题");
toolbar.setLogo(R.mipmap.ic_launcher);
setSupportActionBar(toolbar);//把toolbar当成actionBar使用


菜单配置

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_search"
        android:orderInCategory="80"
        android:title="@string/tv_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom"
        />
    <item
        android:id="@+id/action_share"
        android:orderInCategory="90"
        android:title="@string/tv_share"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
        app:showAsAction="ifRoom"
        />
    <item
        android:id="@+id/action_error_ques"
        android:orderInCategory="100"
        android:title="@string/tv_error_ques"
        app:showAsAction="never"
        android:icon="@mipmap/error_prac_icon"

        />
    <item
        android:id="@+id/action_collected_ques"
        android:orderInCategory="110"
        android:title="@string/tv_collection_ques"
        app:showAsAction="never"
        android:icon="@mipmap/memu_colle_prac_icon"
        />
</menu>
    • orderInCategory
      设置菜单项的排列顺序,必须设置大于等于0的整数值。数值小的排列在前,如果值相等,则按照xml中的顺序展现。
    • title
      菜单项的标题。
    • icon
      菜单项的图标。
    • showAsAction
      该属性有五个值,可以混合使用。
      • always
        总是显示在Toolbar上。
      • ifRoom
        如果Toolbar上还有空间,则显示,否则会隐藏在溢出列表中。
      • never
        永远不会显示在Toolbar上,只会在溢出列表中出现。
      • withText
        文字和图标一起显示。
      • collapseActionView
        声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。一般要配合ifRoom一起使用才会有效。
  @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.memu_prac_toolbar,menu);
        return true;
    }

 

菜单单击事件

@Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.action_error_ques:
                startActivity(new Intent(MainActivity.this, ErrorActivity.class));
                break;
            case R.id.action_collected_ques:
                startActivity(new Intent(MainActivity.this, CollectedActivity.class));
                break;
            default:
                return false;
        }
        return true;
    }

 

在此引用某博客的一张图以及该博客对其的解释

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2006.html

 

  1. setNavigationIcon
    即设定 up button 的图标,因为 Material 的介面,在 Toolbar这里的 up button样式也就有別于过去的 ActionBar 哦。

  2. setLogo
    APP 的图标。

  3. setTitle
    主标题。

  4. setSubtitle
    副标题。

  5. setOnMenuItemClickListener
    设定菜单各按鈕的动作。

// Navigation Icon 要設定在 setSupoortActionBar 才有作用

其余的明天继续写。

posted @ 2017-03-03 23:57  妖久  阅读(238)  评论(0编辑  收藏  举报