Andriod studio 学习 之 ActionBar, DrawLayout ,SlidingMenu

本文详细介绍了Toolbar和DrawerLayout在Android应用开发中的使用方法,包括如何设置Toolbar的标题、子标题、图标,以及如何实现DrawerLayout的开启和关闭功能。同时,文章还提供了自定义视图、菜单设置和事件监听的具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ToolBar常用的方法

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

DrawerLayout常用的方法

DrawerLayout.isDrawerOpen(Gravity.LEFT)是否开启;
DrawerLayout.openDrawer(Gravity.LEFT);开启抽屉
DrawerLayout.closeDrawer(Gravity.RIGHT);关闭抽屉

效果图

在这里插入图片描述
在这里插入图片描述

ToolBar和DrawerLayout代码

activity布局

<?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=".day009.ToolBar">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        >
    </android.support.v7.widget.Toolbar>

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/draw"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#63A4E6"
            >
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="打开抽屉"
                android:onClick="open"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="关闭抽屉"
                android:onClick="close"/>
            <TextView
                android:id="@+id/tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="200dp"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:background="#BDC7D1"
            android:layout_gravity="right"
            >
            <Button
                android:id="@+id/ctbtn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="抽屉中的按钮" />
        </LinearLayout>
    </android.support.v4.widget.DrawerLayout>
</LinearLayout>

自定义view布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="自定义的view"
    />
</LinearLayout>

创建一个menu

<?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">
    <item android:id="@+id/menu1" android:title="搜索" android:icon="@mipmap/ic_launcher_round" app:showAsAction="never"></item>
    <item android:id="@+id/menu2" android:title="添加" android:icon="@mipmap/ic_launcher_round" app:showAsAction="never"></item>
</menu>

activity中的代码

package com.example.study.day009;

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.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.example.study.R;

public class ToolBar extends AppCompatActivity {
    private Toolbar toolbar;
    private DrawerLayout draw;
    private TextView tv;
    private Button ctbtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_tool_bar);
        draw = (DrawerLayout) findViewById(R.id.draw);
        tv = (TextView) findViewById(R.id.tv);
        ctbtn = (Button) findViewById(R.id.ctbtn);
        toolbar = (Toolbar) findViewById(R.id.toolbar);

        toolbar.setLogo(R.mipmap.ic_launcher_round);
        toolbar.setNavigationIcon(R.mipmap.ic_launcher_round);
        toolbar.setTitle("工具条");
        toolbar.setSubtitle("1705A");
        View view = LayoutInflater.from(this).inflate(R.layout.tit, null);
        toolbar.addView(view);//自定义部分

        setSupportActionBar(toolbar);

    }

    @Override//创建菜单
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override//添加事件
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId()==R.id.menu1){
            Toast.makeText(this, "搜索", Toast.LENGTH_SHORT).show();
        }else if (item.getItemId()==R.id.menu2){
            Toast.makeText(this, "添加", Toast.LENGTH_SHORT).show();
        }
        return super.onOptionsItemSelected(item);
    }

    public void open(View view) {
        draw.openDrawer(Gravity.RIGHT);
    }

    public void close(View view) {
        draw.closeDrawer(Gravity.RIGHT);
    }
}
Slidingmenu

首先需要导入一个第三方包

activity布局

<?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=".day009.Slidingmenu">

    <LinearLayout
        android:id="@+id/layout"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </LinearLayout>
</LinearLayout>

activity代码

package com.example.study.day009;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.LinearLayout;

import com.example.study.R;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;

import java.util.List;

public class Slidingmenu extends AppCompatActivity {
    private LinearLayout layout;
    private FragmentManager manager;
    private SlidingMenu slidingMenu;
    private firstFragment fragment1;
    private twoFragment fragment2;
    private threeFragment fragment3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_slidingmenu);


        layout = (LinearLayout) findViewById(R.id.layout);

        slidingMenu = new SlidingMenu(this);
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//滑动方式,整个屏幕的滑动
        slidingMenu.setMode(SlidingMenu.LEFT);//滑出来的方向
        View view = LayoutInflater.from(this).inflate(R.layout.item1, null);
//        slidingMenu.showContent();
        slidingMenu.setMenu(view);
        slidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT);//把slidingMenu和activity关联

        fragment1 = new firstFragment();
        fragment2 = new twoFragment();
        fragment3 = new threeFragment();
        manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.commit();

        slidingMenu.getMenu().findViewById(R.id.bt1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction1 = manager.beginTransaction();
                transaction1.replace(R.id.layout,fragment1);
                transaction1.commit();
                slidingMenu.showContent();
            }
        });
        slidingMenu.getMenu().findViewById(R.id.bt2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction2 = manager.beginTransaction();
                transaction2.replace(R.id.layout,fragment2);
                transaction2.commit();
                slidingMenu.showContent();
            }
        });
        slidingMenu.getMenu().findViewById(R.id.bt3).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction3 = manager.beginTransaction();
                transaction3.replace(R.id.layout,fragment3);
                transaction3.commit();
                slidingMenu.showContent();
            }
        });
    }
}

三个fragment可以自行手动创建,按需求添加即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值