Toolbar+DrawerLayout

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);
            }
        });


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android DrawerLayout是一种用于实现侧滑菜单的布局容器。它可以让用户通过滑动屏幕边缘或者点击导航按钮来打开或关闭侧滑菜单。以下是实现DrawerLayout的步骤: 1. 在XML布局文件中定义DrawerLayout作为根布局,通常包含两个子布局:主内容布局和侧滑菜单布局。 2. 在主内容布局中添加一个Toolbar或者ActionBar作为顶部导航栏。 3. 在侧滑菜单布局中添加菜单项,可以使用ListView、RecyclerView等控件来展示菜单选项。 4. 在Java代码中,通过findViewById方法获取DrawerLayout对象的引用。 5. 使用ActionBarDrawerToggle类来实现与Toolbar或者ActionBar的联动,该类可以监听DrawerLayout的打开和关闭事件,并更新导航按钮的状态。 6. 设置DrawerLayout的监听器,处理菜单项的点击事件。 下面是一个示例代码: XML布局文件: ```xml <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 主内容布局 --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- Toolbar或者ActionBar --> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" /> <!-- 主内容 --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <!-- 侧滑菜单布局 --> <LinearLayout android:id="@+id/nav_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="vertical"> <!-- 菜单项 --> <ListView android:id="@+id/menu_list" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </androidx.drawerlayout.widget.DrawerLayout> ``` Java代码: ```java public class MainActivity extends AppCompatActivity { private DrawerLayout drawerLayout; private ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); drawerLayout = findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawerLayout.addDrawerListener(drawerToggle); drawerToggle.syncState(); ListView menuList = findViewById(R.id.menu_list); menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 处理菜单项的点击事件 } }); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值