1、效果图
Toolbar:标题栏
DrawerLayout:抽屉,侧面滑动
2、ToolBar常用方法
Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件,以此来取代之前的Actionbar 。我们需要在工程中引入appcompat-v7的兼容包以便向下兼容, 使用android.support.v7.widget.Toolbar进行开发。在设计 Toolbar 的时候,Google也留给了开发者很多可定制修改的余地,这些可定制修改的属性在API文档中都有详细介绍,如:
1.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);去掉标题栏;
2.Toolbar.setLogo(),设置logo图片;
3.Toolbar.setTitle().设置标题;
4.Toolbar.setSubTitle()设置子标题;
5.Toolbar.setTitleTextColor(int color);设置标题文字颜色;
6.Toolbar.setSubtitleTextColor();设置子标题文字颜色;
7.setTitleMargin(int start, int top, int end, int bottom);设置标题margin值; 8.onCreateOptionsMenu,getMenuInflater().inflate(R.menu.menu,menu)
设置菜单在给Toolbar设置为actionbar时使用;
9.Toolbar.setOnMenuItemClickListener();Toolbar绑定menu监听;
10.Toolbar.inflateMenu(R.menu.menu)在Toolbar没有替换actionbar时使用;
11.setSupportActionBar(mToolbar);设置toolbar替换actionbar;
12.getLayoutInflater().inflate(R.layout.view_tv,bar);Toolbar添加自定义view
3、DrawerLayout方法
DrawerLayout.isDrawerOpen(Gravity.LEFT)是否开启;
DrawerLayout.openDrawer(Gravity.LEFT);开启抽屉
DrawerLayout.closeDrawer(Gravity.RIGHT);关闭抽屉
4、ToolBar和DrawerLayout绑定
private void bindToolBar() {
//设置开关
//参数:上下文菜单、DrawerLayout、ToolBar、随便放置字符串
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name);
//开启同步
toggle.syncState();
//设置给drawerLayout
drawerLayout.addDrawerListener(toggle);
}
5、布局文件代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<android.support.v7.widget.Toolbar
android:id="@+id/toolBar"
android:background="#03A9F4"
android:layout_width="match_parent"
android:layout_height="60dp"></android.support.v7.widget.Toolbar>
<TextView
android:text="主页面"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:layout_gravity="left"
android:background="#FF5722"
android:layout_width="250dp"
android:layout_height="match_parent">
<TextView
android:id="@+id/tex_qq"
android:textSize="20dp"
android:text="QQ钱包"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_gravity="right"
android:background="#FFEB3B"
android:layout_width="250dp"
android:layout_height="match_parent"></LinearLayout>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
6、java代码
package com.example.day3_toolbar;
import android.content.Intent;
import android.graphics.Color;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Toolbar toolBar;
TextView tex_qq;
DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolBar = findViewById(R.id.toolBar);
tex_qq = findViewById(R.id.tex_qq);
drawer = findViewById(R.id.drawer);
//设置标题
toolBar.setTitle("标题");
//设置标题文字颜色
toolBar.setTitleTextColor(Color.RED);
//设置子标题
toolBar.setSubtitle("子标题");
//设置子标题字体颜色
toolBar.setSubtitleTextColor(Color.BLUE);
//设置logo
toolBar.setLogo(R.mipmap.ic_launcher);
//设置导航
toolBar.setNavigationIcon(R.mipmap.ic_launcher_round);
//添加菜单
toolBar.getMenu().add("哇偶");
//设置菜单选项
toolBar.inflateMenu(R.menu.menu);
//设置菜单点击事件
toolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.title_1:
Toast.makeText(MainActivity.this, "您点击了菜单", Toast.LENGTH_SHORT).show();
break;
case R.id.title_2:
Toast.makeText(MainActivity.this, "您点击了会员", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
});
//给导航图标设置点击事件
toolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(drawer.isDrawerOpen(Gravity.LEFT)){
drawer.closeDrawer(Gravity.LEFT);
}else{
drawer.openDrawer(Gravity.LEFT);
}
}
});
tex_qq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawer.closeDrawer(Gravity.LEFT);
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
}
});
}
}