谷歌提出的 Material Design,Design Support庫囊颅,對于一些常用的效果和控件進行封裝。使用Material Design 就要隱藏掉ActionBar疑俭,修改軟件的主題顯示樣式遥巴,就在style.xml文件里面,替換掉下面這句悴务,這句parent和面跟的就是隱藏ActionBar的主題
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
ToolBar
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"http://和原有Bar一樣高
android:background="?attr/colorPrimary" android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"http://指定ToolBar主題 app:layout_scrollFlags="scroll|enterAlways|snap" />
<!--Toobar在APPBarlayout中添加這個屬性ToolBar會跟著主題內(nèi)容上滑隱藏睹限,下劃出現(xiàn)-->
在ToolBar上添加action按鈕,在res目錄讯檐,新建Directory文件夾(menu)羡疗,創(chuàng)建一個yoolbar.xml文件,showAsAction屬性是設(shè)置按鈕的顯示,always永遠顯示在Toolbar 中别洪,屏幕空間不夠則不顯示叨恨,ifRoom表示屏幕有足夠空間句顯示,否則就顯示在菜單中挖垛,nerve表示永遠顯示在菜單中痒钝,
注:ToolBar中的action只會顯示圖標。而action按鈕只會顯示文字
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/backup"
android:icon="@mipmap/ic_backup"
android:title="Backup"
app:showAsAction="always"/>//總是顯示
<item
android:id="@+id/delete"
android:icon="@mipmap/ic_delete"
android:title="Delete"
app:showAsAction="ifRoom"/>//屏幕充足顯示
<item
android:id="@+id/settings"
android:icon="@mipmap/ic_delete"
android:title="Settings"
app:showAsAction="never"/>//從不顯示
<item
android:id="@+id/startactivty"
android:icon="@mipmap/ic_add"
android:title="StartActivity"
app:showAsAction="always"/>
</menu>
在主函數(shù)中設(shè)置并且重寫onCreateOptionsMenu()方法晕换,添加空間到ToolBar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar, menu);
return true;
}
DrawerLayout是一個布局午乓,在布局里面只允許放兩個直接子控件,第一個是主屏幕顯示的內(nèi)容闸准,第二個是滑動菜單中顯示的內(nèi)容益愈。,第二個子控件加黑需要注意,必須添加,該屬性是指蒸其,在手機哪一側(cè)劃出菜單敏释,star根據(jù)系統(tǒng)語言進行判斷,left摸袁,由左向右劃出钥顽,right相反
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.ca.sd.zsl.toolbartest"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="text.materialdesign.MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</FrameLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"http://
android:text="這是側(cè)滑菜單" />
</android.support.v4.widget.DrawerLayout>
//設(shè)置按鈕彈出菜單
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);//先獲取布局實例,
ActionBar actionBar = getSupportActionBar();然后獲取ActionBar實例靠汁,
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);//讓按鈕顯示出來
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);//設(shè)置圖片 }
home按鈕的點擊事件蜂大,重寫onOptionsItemSelected方法。
@Override public boolean onOptionsItemSelected(MenuItem item)
{ switch (item.getItemId())
在ToolBar最左側(cè)的圖標就叫做HomeAsUp按鈕蝶怔,它的ID永遠是android.R.id.home
case android.R.id.home:STAR:
mDrawerLayout.openDrawer(GravityCompat.START);//打開視圖到x軸的開始位置奶浦,不改變大小,END:打開視圖到x軸的結(jié)束位置踢星,不改變大小
break;
default: break;
}
return true;
}