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一起使用才会有效。
- always
@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
-
setNavigationIcon
即设定 up button 的图标,因为 Material 的介面,在 Toolbar这里的 up button样式也就有別于过去的 ActionBar 哦。 -
setLogo
APP 的图标。 -
setTitle
主标题。 -
setSubtitle
副标题。 -
setOnMenuItemClickListener
设定菜单各按鈕的动作。
// Navigation Icon 要設定在 setSupoortActionBar 才有作用
其余的明天继续写。