《MD系列ToolBar+DrawerLayout侧滑》
(工具栏+侧滑)
㈠♦️新建工程添加v7&v4库 {v7包工具栏&v4包侧滑}
com.android.support:support-v4:+
com.android.support:appcompat-v7:+
㈡♦️使用Toolbar必须隐藏ActionBar进入过程res/values/style.xml修改属性为
<!-- 隐藏ActionBar -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
㈢♦️布局添加ToolBar控件和DrawerLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 添加DrawerLayout侧滑 -->
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 用相对布局把Toolbar控件包围 -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 添加ToolBar工具栏 -->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize" <!-- 自动适应工具栏高度,复制时早记得删除注释以防报错 -->
android:layout_width="match_parent"/>
</RelativeLayout>
<!-- 添加主页布局 -->
<include
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/home"/>
<!-- 添加侧滑菜单布局 -->
<include
android:layout_width="280dp"
android:layout_height="match_parent"
layout="@layout/menu"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
<!--注释:另外要写主布局home.xml和侧滑布局menu.xml-->
㈣♦️Activity中加入ToolBar工具栏
//MainActivity.java
package com.v4v7;
import android.os.*;
import android.support.v4.widget.*;
import android.support.v7.app.*;
import android.support.v7.widget.*;
import android.view.*;
import android.widget.*;
import com.v4v7.*;
import android.support.v7.widget.Toolbar;
/*
使用Toolbar要继承ActionBarActivity
public class MainActivity extends ActionBarActivity//这里修改把Activity该为ActionBarActivity
*/
public class MainActivity extends ActionBarActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//添加toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); //绑定工具栏ID
toolbar.setLogo(R.drawable.ic_launcher); // 设置apk图标
toolbar.setTitle("主标题"); // 主标题
toolbar.setSubtitle("副标题"); // 副标题
setSupportActionBar(toolbar);//替换系统状态栏
DrawerLayout drawer=(DrawerLayout) findViewById(R.id.drawerlayout);//绑定侧滑ID
ActionBarDrawerToggle toggle=new ActionBarDrawerToggle(this,drawer,toolbar,R.string.app_name,R.string.app_name){};
//标题栏左侧显示一个菜单按钮
toggle.syncState();
//绑定侧滑监听器
drawer.setDrawerListener(toggle);
}
@Override
//添加菜单res新建menu中建立menu.xml菜单
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
//菜单的响应方法
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.item:
Toast.makeText(this,"你点击了菜单",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
}
//另外,这里的app/src/res/menu/menu.xml忘写了,自行添加,如果不需要可将MainActivity.java里的代码注释掉或删除!
//这里基本上就完成了!😂
㈤♦️另外设置菜单弹出位置只需要修改style风格:
style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 隐藏ActionBar -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- toolbar(actionbar)颜色 -->
<item name="colorPrimary">#FF48A3</item>
<!-- 状态栏颜色 -->
<item name="colorPrimaryDark">#3A5FCD</item>
<item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>
</style>
<!--溢出[弹出]菜单样式 parent相当于继承 可以不要parent-->
<style name="OverflowMenuStyle" parent="@style/Widget.AppCompat.PopupMenu.Overflow">
<!-- 是否覆盖锚点,默认为true,即盖住Toolbar -->
<item name="overlapAnchor">false</item>
<item name="android:dropDownWidth">wrap_content</item>
<!-- 设置菜单按钮位移 -->
<item name="android:paddingRight">5dp</item>
<!-- 弹出层背景颜色 -->
<item name="android:popupBackground">#3A5FCD</item>
<!-- 弹出层垂直方向上的偏移,即在竖直方向上距离Toolbar的距离,值为负则会盖住Toolbar -->
<item name="android:dropDownVerticalOffset">50dp</item>
<!-- 弹出层水平方向上的偏移,即距离屏幕左边的距离,负值会导致右边出现空隙 -->
<item name="android:dropDownHorizontalOffset">-150dp</item>
<!-- 设置弹出菜单文字颜色 -->
<item name="android:textColor">#3A5FCD</item>
</style>
</resources>