034 Android NavigationView和DrawerLayout实现抽屉式导航设计(侧边栏效果)

1.创建带侧滑效果的activity

右击,new---->activity---->选择NavgationDrawer Activity

2.xml文件布局

(1)activity_main_function.xml

<?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.com/tools"android:id="@+id/drawer_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"tools:openDrawer="start"><includelayout="@layout/app_bar_main_function"android:layout_width="match_parent"android:layout_height="match_parent" /><android.support.design.widget.NavigationViewandroid:id="@+id/nav_view"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="start"android:fitsSystemWindows="true"app:headerLayout="@layout/nav_header_main_function"app:menu="@menu/activity_main_function_drawer" /></android.support.v4.widget.DrawerLayout>

可以看到我们的最外层是DrawerLayout,包含了两个内容:include为显示内容区域,NavigationView为侧边抽屉栏

NavigationView有两个app属性,分别为app:headerLayout和app:menu,headerLayout用于显示头部的布局(可选),menu用于建立MenuItem选项的菜单。

(2)nav_header_main_function.xml
<?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"android:layout_width="match_parent"android:layout_height="@dimen/nav_header_height"android:background="@drawable/side_nav_bar"android:gravity="bottom"android:orientation="vertical"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingBottom="@dimen/activity_vertical_margin"android:theme="@style/ThemeOverlay.AppCompat.Dark"><ImageViewandroid:id="@+id/imageView"android:layout_width="80dp"android:layout_height="80dp"android:contentDescription="@string/nav_header_desc"android:paddingTop="@dimen/nav_header_vertical_spacing"app:srcCompat="@mipmap/ic_account_circle_white_48dp" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:paddingTop="@dimen/nav_header_vertical_spacing"android:text="@string/nav_header_title"android:textAppearance="@style/TextAppearance.AppCompat.Body1" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/nav_header_subtitle" /></LinearLayout>

(3)activity_main_function_drawer.xml(menu目录下)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"tools:showIn="navigation_view"><group android:checkableBehavior="single"><itemandroid:id="@+id/nav_me"android:title="我"android:icon="@mipmap/ic_mine_gray_24"/><itemandroid:id="@+id/nav_friend"android:title="好友"android:icon="@mipmap/ic_friends_gray_24"/><itemandroid:id="@+id/nav_notification"android:title="通知"android:icon="@mipmap/ic_notification_gray_24"/><itemandroid:id="@+id/nav_message"android:title="私信"android:icon="@mipmap/ic_messages_gray_24"/></group><group android:checkableBehavior="none"android:id="@+id/group_manage"><itemandroid:id="@+id/nav_manage"android:title="应用管理"android:icon="@mipmap/ic_app_management_gray_24"/></group><item android:title="Communicate"><menu><itemandroid:id="@+id/nav_share"android:icon="@drawable/ic_menu_share"android:title="分享" /><itemandroid:id="@+id/nav_send"android:icon="@drawable/ic_menu_send"android:title="发送" /></menu></item></menu>

3.java后台

package com.example.administrator.test66smartbeijing;import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;import com.example.administrator.test66smartbeijing.fragment.GovernmentFragment;
import com.example.administrator.test66smartbeijing.fragment.HomePagerFragment;
import com.example.administrator.test66smartbeijing.fragment.NewsCenterFragment;
import com.example.administrator.test66smartbeijing.fragment.SettingFragment;
import com.example.administrator.test66smartbeijing.fragment.SmartServiceFragment;import java.util.ArrayList;
import java.util.List;public class MainFunctionActivity extends AppCompatActivityimplements NavigationView.OnNavigationItemSelectedListener {ViewPager viewPager;List<Fragment> fragments;BottomNavigationView bottomNavigationView;MenuItem menuItem;TextView tv_main_title;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_function);//设置顶部菜单栏Toolbar toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);DrawerLayout drawer =findViewById(R.id.drawer_layout);ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);drawer.addDrawerListener(toggle);toggle.syncState();NavigationView navigationView = findViewById(R.id.nav_view);navigationView.setNavigationItemSelectedListener(this);initBottomNavigationView();}@Overridepublic void onBackPressed() {DrawerLayout drawer = findViewById(R.id.drawer_layout);if (drawer.isDrawerOpen(GravityCompat.START)) {drawer.closeDrawer(GravityCompat.START);} else {super.onBackPressed();}}@SuppressWarnings("StatementWithEmptyBody")@Overridepublic boolean onNavigationItemSelected(MenuItem item) {// Handle navigation view item clicks here.int id = item.getItemId();if (id == R.id.nav_me) {// Handle the camera action} else if (id == R.id.nav_friend) {} else if (id == R.id.nav_notification) {} else if (id == R.id.nav_message) {} else if (id == R.id.nav_share) {} else if (id == R.id.nav_send) {}DrawerLayout drawer = findViewById(R.id.drawer_layout);drawer.closeDrawer(GravityCompat.START);return true;}private class Adapter extends FragmentPagerAdapter {List<Fragment> list1;public Adapter(FragmentManager fm, List<Fragment> fragments) {super(fm);this.list1=fragments;}@Overridepublic Fragment getItem(int position) {return list1.get(position);}@Overridepublic int getCount() {return list1.size();}}
}

4.效果图

 

参考文献:https://www.cnblogs.com/JohnTsai/p/5172056.html 

转载于:https://www.cnblogs.com/luckyplj/p/10931418.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络——链路层之局域网

文章目录一 局域网的基本概念和体系结构1.局域网2.局域网拓扑结构3.局域网传输介质4.局域网介质访问控制方法5.局域网的分类6.IEEE802标准7.MAC和LLC子层8.总结二 以太网1.以太网概述2.以太网提供无连接、不可靠服务3.以太网传输介质与拓扑结构4.10BASE-T以太网5.适配器和MAC地…

法国学者29页预印本论文「证明」黎曼猜想,这次的方向对了吗?

来源&#xff1a;机器之心2018年秋天&#xff0c;当菲尔兹奖、阿贝尔奖得主、89岁高龄的迈克尔 阿蒂亚&#xff08;Michael Atiyah&#xff09;爵士站在海德堡获奖者论坛的讲台&#xff0c;用45分钟、一页PPT展示了自己对黎曼猜想的证明时&#xff0c;众人沸腾。这是阿蒂亚爵士…

计算机网络——链路层之PPP协议和HDLC协议

文章目录一 PPP协议1.广域网2.PPP协议的特点3.PPP协议应该满足的要求4.PPP协议的三个组成部分5.PPP协议的状态图6.PPP协议的帧格式二 HDLC协议一 PPP协议 1.广域网 2.PPP协议的特点 3.PPP协议应该满足的要求 4.PPP协议的三个组成部分 5.PPP协议的状态图 6.PPP协议的帧格式 二 …

中国科技的家底是什么?

来源&#xff1a; 观察者网作者&#xff1a;胡延平第四产业新视角下的中国家底&#xff1a;基石企业如何帮助这个国家升级经济&#xff1f;9个问题&#xff1a;技术向哪里升格、产业向哪里升级、经济向哪里升维&#xff1f;什么样的家底支持我们采取什么样的策略&#xff1f;融…

批量替换文件夹下所有文件的内容

将上面的10.0.13.16:4000变成10.0.13.16:5000 sed -i "s/10.0.13.16:4000/10.0.13.16:5000/g" grep -rl "10.0.13.16" ./ 转载于:https://www.cnblogs.com/boshen-hzb/p/10935345.html

linux的基础知识——TCP握手

1.TCP为什么需要三次握手&#xff1f; \qquad因为IP处于网络层&#xff0c;不稳定&#xff0c;与硬件联系紧密。传输层是对网路层的不稳定性做完全不弥补——UDP——无连接的不可靠报文传输&#xff1b;对网络层做完全弥补——TCP——面向连接的可靠数据包传递。TCP连接断开包含…

拒绝赛博朋克:斯坦福HAI报告警示“科技巨头垄断AI研究已成威胁”,力挺「国家安全云」计划...

来源&#xff1a;AI科技评论作者&#xff1a;莓酊编辑&#xff1a;青暮人工智能技术从诞生伊始就被冠以悬在人类头上的达摩克利斯剑之名。在游戏《赛博朋克2077》&#xff08;Cyberpunk 2077&#xff09;中&#xff0c;超级科技企业荒坂集团制霸全球&#xff0c;掌控着大部分国…

项目:基于以太网通信,单片机作为客户端,接收CAN-Ethernet的十六进制数据

一、物理连接 二&#xff0c;流程分析 电脑连接CAN分析仪&#xff0c;电脑通过软件USB-CAN把can十六进制数据发到CAN分析仪。CAN分析仪连接CAN转以太网设备&#xff0c;数据通过CAN转以太网设备后&#xff0c;通过网线传送到单片机。这里面&#xff0c;CAN转以太网设置为TCP C…

深度学习 AI 解释:神经网络

来源&#xff1a;ScienceAI编译&#xff1a;绿萝在过去的 10 年里&#xff0c;性能最好的人工智能系统——比如智能手机上的语音识别器或谷歌最新的自动翻译器——都是由一种称为「深度学习」的技术产生的。深度学习实际上是一种称为神经网络的人工智能方法的新名称&#xff0c…

美国国家科学院发布:材料有哪些研究前沿?

来源&#xff1a;中国科学院科技战略咨询研究院作者&#xff1a;张超星编辑&#xff1a;新材料在线美国国家科学院、工程院和医学科学院发布了针对材料研究的第三次十年调查——《材料研究前沿&#xff1a;十年调查》报告。该报告主要评估了过去十年中材料研究领域的进展和成就…

牛顿第三定律不再起作用:芝加哥大学找到了一种新系统,作用力不等于反作用力...

来源&#xff1a;AI科技评论作者&#xff1a;吴彤编辑&#xff1a;青暮世界上还有许多并未达到平衡的系统&#xff0c;比如生命&#xff0c;在这样的系统中&#xff0c;牛顿第三定律失效了。目前&#xff0c;芝加哥大学的研究员找到了一种思考非平衡系统中相变的新方法。牛顿第…

linux的基础知识——TCP通信状态

文章目录1.半关闭shutdown2.端口复用setsockopt2.1 程序中遇到的问题2.2 端口复用3.多路I/O转接3.1 什么是多路I/O转接服务器&#xff1f;3.2 select3.3 poll3.4 epoll3.4.1 epoll API1.半关闭shutdown 2.端口复用setsockopt 2.1 程序中遇到的问题 2.2 端口复用 #include<s…

大脑模拟AI学习策略,这项逼近反向传播的研究登上《自然-神经科学》

来源&#xff1a;机器之心编辑&#xff1a;陈萍、杜伟大脑是如何近似反向传播算法的&#xff1f;发表在《自然 - 神经科学》的一篇论文&#xff0c;研究者找到了可以生活在活体大脑并进行实时工作的等价物&#xff0c;他们提出的大脑学习算法模型可以模拟反向传播过程。每当人类…

linux的基础知识——TCP异常断开

1.TCP异常断开 1.1 心跳检测机制 1.2 设置TCP属性

普京谈“元宇宙”:这无疑是一种挑战

来源&#xff1a;参考消息网据塔斯社莫斯科11月12日报道&#xff0c;俄罗斯总统弗拉基米尔普京认为&#xff0c;“元宇宙”带来的可能性应该用于突破距离的限制&#xff0c;帮助交流和学习&#xff0c;而不是逃避现实世界的出路。普京在出席2021年“人工智能之旅”国际会议&…

论文阅读 | DasiamRPN

文献&#xff1a;DaSiamRPN: Zheng Zhu, Qiang Wang, Bo Li, Wu Wei, Junjie Yan, Weiming Hu."Distractor-aware Siamese Networks for Visual Object Tracking." ECCV (2018). [paper][github] 文章主要贡献 1.训练数据的扩充 加入Detection pair (ImageNet,COCO中…

linux的基础知识——UDP

1.UDP服务器 2.UDP处理模型 3.多播 4.分屏软件的实现

UC伯克利发现「没有免费午餐定理」加强版:每个神经网络,都是一个高维向量...

来源&#xff1a;AI科技评论作者&#xff1a;Mr Bear、杏花编辑&#xff1a;青暮经典的「没有免费午餐定理」表明&#xff1a;如果某种学习算法在某些方面比另一种学习算法更优&#xff0c;则肯定会在其它某些方面弱于另一种学习算法。也就是说&#xff0c;对于任何一个学习问题…

第二阶段团队冲刺(十)

会议内容&#xff1a; 高宇&#xff1a; 昨天制作了一个自定义的控件&#xff0c;可以实现&#xff0c;对时间的ViewText进行侦听&#xff0c;当点击时弹出自定义框&#xff0c;选择获取&#xff0c;年月日&#xff0c;并更改数据库方法 遇到的问题&#xff1a;所用的数据库查询…