NavigationView 的使用

Android 实现左侧导航栏:NavigationView是什么?NavigationView和Navigation搭配使用 1)左侧导航栏效果图2)NavigationView是什么?3)NavigationView和Navigation搭配使用4)NavigationView的其他方法。 阅读详情

    对于抽屉式菜单界面很多APP都有应用,此前写抽屉式界面都需要自定义。现在谷歌提供的 导航视图(NavigationView与抽屉布局(DrawerLayout) 结合使用,能提供很好的侧滑交互体验。要使用NavigationView 首先还是要添加依赖:

        implementation 'com.android.support:design:26.1.0'  
     先实现布局文件:
<?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"
    android:id="@+id/drawerlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary">

        </android.support.v7.widget.Toolbar>

        <TextView
            android:id="@+id/tv_navigation"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="这是点击了那个导航菜单?"
            android:textSize="20sp" />
    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/navigation_header"
        app:menu="@menu/drawer_view">

    </android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>

    首先说一下NavigationView的属性:

    1、android:layout_gravity : 表示布局自身在父布局的那个位置。对于Drawerlayout 来说,是指其子布局从那边滑出                     

         NavigationView 通常设置 android:layout_gravity="start"  

    2、app:headerLayout  : 指定一个头布局的资源文件

    3、app:menu : 指定一个导航菜单的资源文件

    4、app:ItemBackground : 指定菜单项的背景

    5、app:ItemTextColor : 指定菜单项的文字颜色

    6、app:ItemTextAppearance : 指定菜单项的文字样式

    7、app:ItemIconTint : 指定菜单项的图标色彩

   其中navigation_header是一个自定义的头布局文件,代码如下:

<?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="150dp"
    android:background="?attr/colorPrimary"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="50dp"
        android:src="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/tv_navigation_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="导航视图"
        android:textColor="@color/white_FFFFFF"
        android:textSize="20sp" />

</LinearLayout>
    还有我自定义的菜单文件 drawer_view.xml, 注意:要实现两个组(group)之间有分割线,group得有 id:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group
        android:id="@+id/group1"
        android:checkableBehavior="single">
        <item
            android:id="@+id/nav_home"
            android:icon="@mipmap/home"
            android:title="首页" />
        <item
            android:id="@+id/nav_teleplay"
            android:icon="@mipmap/teleplay"
            android:title="电视剧" />
        <item
            android:id="@+id/nav_movie"
            android:icon="@mipmap/movie"
            android:title="电影" />

    </group>

    <group
        android:id="@+id/group2"
        android:checkableBehavior="single">
        <item
            android:id="@+id/nav_shows"
            android:icon="@mipmap/shows"
            android:title="综艺" />
        <item
            android:id="@+id/nav_funny"
            android:icon="@mipmap/funny"
            android:title="搞笑" />
    </group>


    <item android:title="其他">
        <menu>
            <item
                android:id="@+id/nav_setting"
                android:icon="@mipmap/setting"
                android:title="设置" />
            <item
                android:id="@+id/nav_onwer"
                android:icon="@mipmap/owner"
                android:title="关于我们" />
        </menu>
    </item>
    
</menu>

    然后这个menu 的图片资源文件为:             

    最后在代码中进行功能的实现,代码如下:    

public class NavigationActivity extends AppCompatActivity {

    private NavigationView mNavigation;
    private TextView tvNavigation;
    private Toolbar mToolbar;
    private ActionBar mActionBar;
    private DrawerLayout mDrawerLayout;
    private View mHeaderView;
    private TextView mtvNavigationTitle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigation);
        initView();
        initEvent();
    }

    private void initView() {
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
        mNavigation = (NavigationView) findViewById(R.id.navigation);
        tvNavigation = (TextView) findViewById(R.id.tv_navigation);
        // 获取头布局  然后通过头布局视图获取里面的控件
        mHeaderView = mNavigation.getHeaderView(0);
        mtvNavigationTitle = (TextView) mHeaderView.findViewById(R.id.tv_navigation_title);
    }

    private void initEvent() {
        setSupportActionBar(mToolbar);
        mActionBar = (ActionBar) getSupportActionBar();
        mActionBar.setDisplayHomeAsUpEnabled(true);
        mNavigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
                String title = item.getTitle().toString();
                tvNavigation.setText(title);
                mtvNavigationTitle.setText(title);
                mDrawerLayout.closeDrawers();
                // 是否将项目设为选中项目
                return true;
            }
        });
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                mDrawerLayout.openDrawer(GravityCompat.START);
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}
        其中需要注意就是setNavigationItemSelectedListener 方法,返回false 是不设置点击的项目为选中状态,true 则设置为选中状态。第二个就是 getHeaderView()  方法,能获取头布局文件的控件,进入执行控制操作。

组态王与网络mysql数据库通过ODBC连接 组态王与网络mysql数据库通过ODBC连接一、mysql数据库的安装二、Navicat安装和配置2.1 安装2.2 建立数据的连接2.3 设计表格三、ODBC的配置四、组态王安装与配置4.1 组态王安装4.2 记录体设置4.3 组态王与数据库建立连接4.4 组态王向数据库写入数据4.5 断开数据库的连接五、总结 部分参考https://blog.youkuaiyun.com/ACanswer/articl... 阅读详情

相关推荐

不同网络下 一台电脑连接另一台电脑的mysql数据库

不同网络下 一台电脑连接另一台电脑的mysql数据库 首先确保,两台电脑都已经有了基本配置好的可用的mysql数据库 确定一台电脑为服务端,再服务端数据库下,先授权可被其他电脑访问: 如果MySQL是8.0以下版本: mysql>grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx'; #最后的地方填入当前用户密码 m...

蔡徐坤加入博客园的博客 1万+

android NavigationView的使用

android NavigationView的使用

golang网络编程:连接MySQL数据库

const (db_driver = "username:password@tcp(127.0.0.1:3306)/DBname?charset=utf8") 其中: “username:password”:应填写你的MySQL数据库对应的的用户名和密码 “127.0.0.1:3306”:这里是访问本机的数据库(数据库的端口号一般为3306),如果是远程访问,需要修改IP地址。 “DBname”:应改为你的数据库的库名 “charset=utf8”:这是编码规则 连接数据库: opend, db :=

屎山搬运工 605

安卓NavigationView使用方法

目录 导入依赖 介绍NavigationView 布局文件、标签属性 导入依赖 使用Design下的NavigationView前导入依赖步骤 在这个页面中直接找到design这个依赖,点击后再点击这两个窗口上的OK按钮,等待编译完成就完成导入了! (可能版本不一样,导入即可) 13.1.5 介绍NavigationView Google在5.0之后推出的Nav...

两行代码 踏踏实实de工作 3万+

达梦数据库连接报错6001网络通信异常

本文主要记录客户端连接达梦数据库报错6001网络通信异常问题分析过程、问题原因以及问题解决方法。

chen_zizi2025的博客 2768

WAS集群系列(2) 数据库连接低级错误——网络连接问题

WAS集群系列(2) 数据库连接低级错误——网络连接问题

qq_43685346的博客 1049

DrawerLayout和NavigationView使用详解

Android Material Design Library 推出了很长时间,越来越多的APP使用了符合Library 包的控件,DrawerLayout绝对是热门之一,Material Design定义了一个抽屉导航应该有何种外观和感受,统一了侧滑菜单和样式。

丿歌吟有梦 705

ArcGIS Pro跨网络连接SQL Server并启用企业级地理数据库

本文详细介绍了如何在ArcGIS Pro中跨网络连接SQL Server并启用企业级地理数据库。文章涵盖了网络连通性验证、ODBC驱动安装、SQL Server远程访问配置、数据库连接创建以及企业级地理数据库功能的启用步骤,并提供了常见问题排查和高级配置技巧,帮助用户高效实现地理数据的跨网络管理。

weixin_30813225的博客 414

Android5.0之NavigationView的使用

导航菜单的制作方式多种多样,网上也有各种炫酷效果的具体实现方式,那么今天我主要是想来说说Google在Android5.0之后推出的NavigationView的具体使用方式。NavigationView在很多App上都已经可以看到其效果图,国内的比如知乎(侧拉菜单滑出来的那一部分属于NavigationView),如下图:还有Google自己的那些app,也基本全都采用了Navigation...

weixin_30580943的博客 1100

数据库连接超时问题(求解)

问题出现的背景: APP

chenhfm的专栏 3563

数据库连接异常全场景排查:从网络层到权限配置的十步诊断法

数据库连接异常全场景排查:从网络层到权限配置的十步诊断法。对于容器化环境,需特别注意网络命名空间和Service Mesh代理的影响。通过十步诊断法,可覆盖90%的数据库连接异常场景。建议在架构设计中增加。:原创内容,转载请注明出处。关注作者获取更多数据库调优技巧!数据库连接异常的本质

我是赛博AI Lewis 1152

NavigationView使用简介

导航视图(NavigationView)通常与抽屉布局(DrawerLayout)结合使用,实现了良好的侧滑交互体验。从常规开发来说,侧滑一般都是左侧实现侧滑,抽屉布局可有三个子布局。(注意:第一个子布局一定要是主界面,其次的两个子布局就是左右两侧的布局,左右两侧只放一个也可)首先在build.gradle中添加引用implementation 'com.android.support:desig...

sjhandrf的博客 888

连接Oracle11g数据库时遇到无监听,网络适配器无法建立等问题的一些解决办法

最近在用Java做一个学生成绩管理系统,

两叶障目 7717

探索Oracle Autonomous Database:从数据库加载文档的实用指南

是一个用于从Oracle Autonomous Database加载文档的工具。它支持通过连接字符串或tns配置进行连接。通过mTLS(双向TLS)认证时,需要提供和。通过这篇文章,我们了解了如何从Oracle Autonomous Database加载文档,并提供了不同的连接方法。希望这些信息能帮助您在工作中更高效地管理数据库操作。

bhawfgrcbtwny的博客 826

Dify连接数据库实战指南:从网络通达到SQL可信执行

数据库连接是AI智能体接入业务数据的基础能力,其本质远超简单的网络连通,涉及协议兼容、权限控制、SQL安全校验与结果结构化封装等多层机制。理解JDBC/ODBC驱动行为、数据库特有配置(如SQLite的journal_mode、SQL Server的TCP/IP启用、达梦的ENCRYPT参数)及Dify内置的安全代理层,是解决‘测试成功但查询失败’类问题的关键。本文聚焦Dify平台,覆盖SQLite工具调试、SQL Server专题实验、Oracle分页查询适配、达梦与高斯数据库信创落地等高频场景,提供可验

weixin_32306957的博客 287

掌握海量数据分析利器:深入了解AnalyticDB for PostgreSQL

AnalyticDB for PostgreSQL是基于开源Greenplum Database项目开发的一个增强版的MPP(大规模并行处理)数据仓库服务。它兼容ANSI SQL 2003语法,并支持PostgreSQL和Oracle数据库生态系统。此外,它还支持行存储和列存储两种方式,能够高效处理离线PB级别的数据并执行高度并发的在线查询。通过AnalyticDB for PostgreSQL,开发者可以高效处理和分析海量数据。这不仅在技术上为企业提供了潜力无限的分析工具,也能实质性提升业务决策的效率。

saeagtj的博客 1147

解决FireBird数据库连接难题:DataBase.Net工具配置避坑指南

本文详细解析了FireBird数据库连接中的常见问题及解决方案,重点介绍了DataBase.Net工具的配置技巧和避坑指南。从环境准备、连接参数设置到高级排错方法,帮助开发者高效解决火鸟数据库连接难题,确保稳定可靠的数据库访问体验。

weixin_30374009的博客 377

Android 真机调试查看db数据库文件

在真机调试的时候想要adb查看手机上的db文件很麻烦 必须root手机获取超级权限才能进行adb查看/data/data/包名/databases/目录下的db文件   我们可以使用数据库可视化工具SQLiteStudio进行db文件的查看   一种方法是Device File Explorer导出db文件到电脑,然后用SQLiteStudio打开 不过对于频繁修改的数据,每次都要导出...

yh18668197127的博客 5815
上一篇: TabLayout 的使用
下一篇: Android CoordinatorLayout的使用——实现Toolbar的隐藏和折叠
谦行
博客等级 码龄11年 182粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值