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.Toolbarandroid: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"><itemandroid:id="@+id/action_search"android:orderInCategory="80"android:title="@string/tv_search"app:actionViewClass="android.support.v7.widget.SearchView"app:showAsAction="ifRoom"/><itemandroid:id="@+id/action_share"android:orderInCategory="90"android:title="@string/tv_share"app:actionProviderClass="android.support.v7.widget.ShareActionProvider"app:showAsAction="ifRoom"/><itemandroid:id="@+id/action_error_ques"android:orderInCategory="100"android:title="@string/tv_error_ques"app:showAsAction="never"android:icon="@mipmap/error_prac_icon"/><itemandroid: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一起使用才会有效。
- always
- orderInCategory
@Overridepublic boolean onCreateOptionsMenu(Menu menu){getMenuInflater().inflate(R.menu.memu_prac_toolbar,menu);return true;}
菜单单击事件
@Overridepublic 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
setNavigationIcon
即设定 up button 的图标,因为 Material 的介面,在 Toolbar这里的 up button样式也就有別于过去的 ActionBar 哦。setLogo
APP 的图标。setTitle
主标题。setSubtitle
副标题。setOnMenuItemClickListener
设定菜单各按鈕的动作。
// Navigation Icon 要設定在 setSupoortActionBar 才有作用
其余的明天继续写。