NavigationView

来源:互联网 发布:淘宝到了1个钻 编辑:程序博客网 时间:2024/06/05 15:55

简介

构造

使用

添加依赖

在AndroidManifest.xml中加入:

compile 'com.android.support:design:26.0.0-alpha1'

布局代码

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/drawerLayout"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:fitsSystemWindows="true"    tools:context="com.example.administrator.design.view.NavigationViewActivity">    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <TextView            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center_horizontal"            android:text="内容区域" />    </RelativeLayout>    <!--    navigationView:headerLayout="@layout/headerLayout"添加头布局    navigationView:menu="@menu/my_menu"以菜单的形式 添加点击按钮    -->    <android.support.design.widget.NavigationView xmlns:navigationView="http://schemas.android.com/apk/res-auto"        android:id="@+id/navigationView"        android:layout_width="300dp"        android:layout_height="match_parent"        android:layout_gravity="left"        navigationView:headerLayout="@layout/header_layout"        navigationView:menu="@menu/my_menu">    </android.support.design.widget.NavigationView></android.support.v4.widget.DrawerLayout>

引用资源

  • HeaderLayout
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="200dp">    <ImageView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="@drawable/slide_header" />    <TextView        android:id="@+id/tv_header"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:text="印度有200万安卓" /></RelativeLayout>
  • menu
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item        android:id="@+id/setting_menu"        android:icon="@mipmap/ic_launcher"        android:title="设置"></item>    <item        android:id="@+id/about_menu"        android:icon="@mipmap/ic_launcher"        android:title="关于我们"></item>    <item        android:id="@+id/clear_menu"        android:icon="@mipmap/ic_launcher"        android:title="清除缓存"></item></menu>

逻辑代码

package com.example.administrator.design.view;import android.app.Activity;import android.os.Bundle;import android.support.design.widget.NavigationView;import android.support.v4.widget.DrawerLayout;import android.view.Gravity;import android.view.MenuItem;import android.view.View;import android.widget.TextView;import android.widget.Toast;import com.example.administrator.design.R;public class NavigationViewActivity extends Activity {    /*声明控件*/    private NavigationView mNavigationView;    private DrawerLayout mDrawerLayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_navigation_view);        initView();    }    private void initView() {        mNavigationView = findViewById(R.id.navigationView);        mDrawerLayout = findViewById(R.id.drawerLayout);        // 获得头布局        View view = mNavigationView.getHeaderView(0);        TextView tvHeader = view.findViewById(R.id.tv_header);        tvHeader.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(NavigationViewActivity.this, "抢饭碗的", Toast.LENGTH_SHORT).show();            }        });        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {            @Override            public boolean onNavigationItemSelected(MenuItem item) {                switch (item.getItemId()) {                    case R.id.setting_menu:                        Toast.makeText(NavigationViewActivity.this, "设置内容", Toast.LENGTH_SHORT).show();                        mDrawerLayout.closeDrawer(Gravity.LEFT);                        break;                    case R.id.about_menu:                        Toast.makeText(NavigationViewActivity.this, "关于我们", Toast.LENGTH_SHORT).show();                        mDrawerLayout.closeDrawer(Gravity.LEFT);                        break;                    case R.id.clear_menu:                        Toast.makeText(NavigationViewActivity.this, "清除缓存", Toast.LENGTH_SHORT).show();                        mDrawerLayout.closeDrawer(Gravity.LEFT);                        break;                    default:                        break;                }                return false;            }        });    }}

释义

  • 全屏显示
    android:fitsSystemWindows="true"

  • 抽屉从左边滑出
    android:layout_gravity="left"

  • 所引头布局文件(抽屉上面部分布局)
    navigationView:headerLayout="@layout/header_layout"

  • 所引menu文件(抽屉下面部分点击项)
    navigationView:menu="@menu/my_menu"

  • 设置点击项中图标颜色(同种颜色)
    app:itemIconTint="@color/blue"

  • 设置点击项中图标为非同种颜色)
    navigationView.setItemIconTintList(null);

  • 添加分隔线
    为menu添加group标签,并为group设置id,使group包含点击项,可随意分组

  • 隐藏某点击项(true显示 false隐藏)
    MenuItem menuItem = navigationView.getMenu().findItem(R.id.clearCache);
    menuItem.setVisible(false);

原创粉丝点击