Android Material Design 学习(二)

Material Design 学习(二)——Toolbar+DrawerLayout+NavigationView 实现侧滑

  • 基本效果

    这里写图片描述
  • ##### 布局
<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/main2_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.alex.administrator.medicalcase.activities.MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!-- 注意toolbar的主题 -->
        <android.support.v7.widget.Toolbar
            android:id="@+id/main2_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorToolbar"
            android:theme="@style/Theme.ToolBar.MedicalCase"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

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

        <include
            android:id="@+id/main2_bottom_bar"
            layout="@layout/main_bottom_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="2dp" />

        <android.support.v4.view.ViewPager
            android:id="@+id/main2_content_viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@id/main2_bottom_bar"
            android:layout_below="@id/main2_toolbar"></android.support.v4.view.ViewPager>
    </RelativeLayout>

    <!-- app:menu 设置底部菜单布局 头部布局在代码中实现,以便响应相关的事件-->
    <android.support.design.widget.NavigationView
        android:id="@+id/main2_nv"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:fitsSystemWindows="true"
        app:menu="@menu/main_drawer_menu">
    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
  • toolbar的初始化
/**
* 初始化标题栏
*/
private void initToolbar(){
    mToolbar= (Toolbar)findViewById(R.id.main2_toolbar);
    //设置toolbar 为标题栏
    setSupportActionBar(mToolbar);
    mDrawer= (DrawerLayout)findViewById(R.id.main2_drawer_layout);
    //关联侧滑布局与toolbar上按钮
    mDrawerToggle=new ActionBarDrawerToggle(this,mDrawer,mToolbar,
            R.string.drawer_open,R.string.drawer_close);
    mDrawerToggle.syncState();
    mDrawer.addDrawerListener(mDrawerToggle);

    //侧滑开关与返回按钮
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    mToolbar.setTitle("医案通");
    mToolbar.setTitleTextColor(Color.parseColor("#ffffff"));
}
  • Toolbar菜单布局文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_search"
        android:icon="@mipmap/ic_search"
        android:title="搜索"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/action_notification"
        android:icon="@mipmap/ic_notifications"
        android:title="通知"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="设置"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_about"
        android:orderInCategory="101"
        android:title="关于"
        app:showAsAction="never"/>
</menu>
  • 侧滑菜单布局文件
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_favorite"
        android:icon="@mipmap/ic_favorite"
        android:title="收藏"/>
    <item
        android:id="@+id/menu_history"
        android:icon="@mipmap/ic_history"
        android:title="我的动态"/>
    <item
        android:id="@+id/menu_setting"
        android:icon="@mipmap/ic_setting"
        android:title="设置"/>

</menu>
  • 加载侧滑菜单以及相关点击事件
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_toolbar_menu,menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            /**
             * 标题栏菜单
             */
            case R.id.action_search://搜索
                break;
            case R.id.action_notification://通知
                break;
            case R.id.action_about://关于
                break;
            case R.id.action_settings://设置
                break;
        }
        return super.onOptionsItemSelected(item);
    }
  • 侧滑菜单初始化及相关点击事件
private void initNavigationView(){
        mNavigationView= (NavigationView) findViewById(R.id.main2_nv);
        mHeaderView=mNavigationView.inflateHeaderView(R.layout.nv_header_layout);
        //头像ImageView的实例
        mHeaderProfileIv= (CircleImageView) mHeaderView.findViewById(R.id.header_profile_img_iv);
        /**
         * 设置侧滑菜单点击事件
         */
        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
                switch(item.getItemId()){
                    //收藏
                    case R.id.menu_favorite:
                        break;
                    //我的动态
                    case R.id.menu_history:
                        toast("我的动态");
                        break;
                    //设置
                    case R.id.menu_setting:
                        break;
                }
                return false;
            }
        });
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值