,item的id必须要和navigation里面的fragment的id相同,否则点击事件不生效,这里先提一下,下面会详细介绍。...Fragment的name是androidx.navigation.fragment.NavHostFragment,这是一个添加到布局中的特殊部件,NavHostFragment通过navGraph与navigation...NavController初始化好了之后,接下来将它和NavigationView、ToolBar、BottomNavigationView、DrawerLayout进行绑定: 3.4 setupActionBarWithNavController...我们看到它重载了很多方法,包括我们上面提到的NavigationView、ToolBar、BottomNavigationView、DrawerLayout。...这样就将组件的状态切换绑定起来了,当fragment切换时,上面提到的接口分发,去切换布局按钮等状态。
,item的id必须要和navigation里面的fragment的id相同,否则点击事件不生效,这里先提一下,下面会详细介绍。...Fragment的name是androidx.navigation.fragment.NavHostFragment,这是一个添加到布局中的特殊部件,NavHostFragment通过navGraph与navigation...NavController初始化好了之后,接下来将它和NavigationView、ToolBar、BottomNavigationView、DrawerLayout进行绑定: 3.4 setupActionBarWithNavController...查看它的方法实现: 我们看到它重载了很多方法,包括我们上面提到的NavigationView、ToolBar、BottomNavigationView、DrawerLayout。...这样就将组件的状态切换绑定起来了,当fragment切换时,上面提到的接口分发,去切换布局按钮等状态。
整体比较舒服合理,各自为阵,却又能关联在一起,加上又是大众喜爱的Material Design风格,所以成为了当下APP首页的主流结构。...> drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android...> DrawerLayout包裹着include的主页和侧边栏内容NavigationView。...关于DrawerLayout更多使用可以查看:DrawerLayout使用详解。 2.主页 这里主页说的是首页除侧边栏以外的页面。 BottomNavigationView底部菜单,与上面的ViewPager关联。 到此页面布局的部分介绍完毕,下面开始说代码部分。
我想了下,就按照我做这个小项目,需要的控件顺序说起吧,这样也相当于大家跟我一起做出一个具有Material Design风格的APP了。 1、主题 一个项目的开始,你得先确定这个项目的主题颜色是什么?...setOnNavigationItemSelectedListener {} 3、DrawerLayout、NavigationView 和BottomNavigationView相对的,不得不介绍一下...3. scroll|enterAlwaysCollapsed 当ScrollView向下滑动时,DependentView先折叠到最小高度(这里是0),然后将事件交给ScrollView,当ScrollView...那下拉的时候就是当ScrollView滑动结束,才开始DependentView的滑动事件。 ?...使用时,需在setContentView()之前加上 window.requestFeature(Window.FEATURE_CONTENT_TRANSITIONS) 跳转时候这样写: startActivity
当处于 selectionFragment 的时候,我们希望标题可以被更新并且显示返回按钮。...比如,当您在最顶层的目的页面时,就不会显示回退按钮,因为没有更高层级的页面。 默认情况下,您应用的最初页面是唯一的最顶层目的页面,但是您也可以定义多个最顶层目的页面。...显示在屏幕上。...为了使代码保持整洁、各个元素之间更加清晰,我们会在新的方法中实现相关操作,并且在 onCreate() 中调用该方法。...setupWithNavController(navController) } 现在当我在屏幕较宽的设备上运行应用时,可以看到抽屉式导航栏已经设置了 MenuItem,并且在导航图中,MenuItem
,它需要包含两个内容视图元素,第一个视图元素是 主显示内容页,第二个是要抽屉弹出的视图。...to toggle nav // drawer getActionBar().setDisplayHomeAsUpEnabled(true); // 使actionbar...showFragment(new HomeFragment()); // 当更换主页内的 子页面(fragment)时,隐藏导航菜单...,使 actionbar的扩展按钮不可见 boolean drawerOpen = mDrawerLayout.isDrawerOpen(mNavigationMenu);...* @param drawerLayout */ public void attacthDrawer(DrawerLayout drawerLayout) {
使用注意点 1、DrawerLayout的第一个子元素必须是默认内容,即抽屉没有打开时显示的布局(如FrameLayout),后面紧跟的子元素是抽屉内容,即抽屉布局(如ListView)。...抽屉菜单的宽度应该不超过320dp,这样用户可以在菜单打开的时候看到部分内容界面。...drawerLayout.setScrimColor(Color.TRANSPARENT); 4、如何填充抽屉的划出后与屏幕边缘之间的内容(即上面的灰色部分)?...,下面显示一组菜单。...与DrawerLayout一起使用可以实现通用的侧滑菜单,布局如下 <?xml version="1.0" encoding="utf-8"?
github地址:https://github.com/shuaijia/MaterialDesignProject 简介 DrawerLayout是Support Library包中实现了侧滑菜单效果的控件...; DrawerLayout分为侧边菜单和主内容两个部分,侧边菜单可以根据手势或点击控制展开与隐藏,主内容区可随菜单点击而切换(自己实现); DrawerLayout 提供 当界面弹出的时候,主要内容区会自动背景变黑...,当点击内容区的时候,抽屉布局会消失 在屏幕边缘手势滑动 会拉出抽屉布局 注意:当按后退键的时候,如果抽屉布局正在显示,则需要关闭抽屉布局 效果 ?...点击事件穿透问题 DrawerLayout界面点击事件穿透问题,即点击Drawerlayout上面的区域,会发现该位置DrawerLayout覆盖掉的区域的控件可以被点击 解决方法:在抽屉完全打开时设置
juejin.cn/post/7337354931480199208 本文由作者授权发布 前言 底部导航栏相信大部分的Androider都不陌生,毕竟对于绝大多数的应用来说底部导航栏是首页的标配,也不缺各种花里胡哨不按常理出牌的底部导航栏...同事:......那阁下又当如何应对?(摆烂) emmmmm.....好了成功激起了我的好奇心,横竖现下手头上没啥要紧的活,那就自己手撸一个来玩玩hhhh!...(主要涉及:BottomNavigationView Navigation Fragment Canvas Path Animation CoordinatorLayout) 实现过程 导航栏与页面跳转...Activity时选择Bottom Navigation Views Activity: 创建好了带导航栏的Activity后界面默认是这样子的效果: 接下来就是根据需求在小细节上修修补补了,由于只需要显示两个导航...唉慢着,这凹槽的深度不是还得跟随按钮的位置动态变化吗,那这些坐标又当如何变动??老铁别急,下面继续来分析。
2.drawerLayout左侧菜单(或者右侧)的展开与隐藏可以被DrawerLayout.DrawerListener的实现监听到,这样你就可以在菜单展开与隐藏反生的时刻做一些希望做的事情,比如更新actionbar...的展开和隐藏与actionbar的app 图标关联起来,当展开与隐藏的时候图标有一定的平移效果,点击图标的时候还能展开或者隐藏菜单。...而drawerLayout的侧边菜单显示成什么样完全是取决于你自己,同样点击事件也完全由你自己去写。...重绘menu,然后activity就有机会在onPrepareOptionsMenu方法中更新menu元素的显示与隐藏 代码: /* Called whenever we call invalidateOptionsMenu...7. drawerLayout与Fragment是什么关系?
脑图呈现文本重点 前期配置 当初LZ前期配置遇了不少坑,这里我们一起回顾下: Step 1:打开工程目录下的build.gradle文件,并添加maven引用 allprojects { repositories...当项目有3到5个顶层(底部)目的地导航到时,可以使用此模式。...使用也是很Easy,如下: 创建一个菜单资源 ,最多5个导航目标(BottomNavigationView不支持超过5个项目); 在内容下面放置BottomNavigationView; 将BottomNavigationView...那下面按照步骤操作一次: Step 1:在布局中添加BottomNavigationView: BottomNavigationView...这里再次简单描述相关细节: Bottom Sheets具有五种状态: STATE_COLLAPSED: Bottom Sheets是可见的,但只显示可视(部分)高度。
从Android3.0(API级别 11)开始,Action bar被包含在所有的使用Theme.Hole主题的Activity(或者是这些Activity的子类)中,当targetSdkVersion...事实上,当使用AppCompatActivity或其他support包中的基类时都会有这个问题。...布局管理器一起使用。...第一个子组件一般是作为显示主区域内容之用,第二个和第三个子组件才是真正的Drawer布局。当然,如果只有一个Drawer的话,第三个组件就不需要了。如下: 1 这里最重要的一个关键属性是android:layout_gravity,如果不设置这个属性,将会导致程序会奔溃。
DrawerLayout 作者:飞龙 DrawerLayout是android.support.v4中提供的控件,用于实现边栏和侧滑效果。...创建 DrawerLayout 最好是界面的顶级布局,否则可能出现触摸时间被屏蔽的问题。它拥有两个子元素,第一个是主内容,第二个是菜单内容。...为了使菜单布局宽度合适,我将其设置为360dp。 主内容区的布局代码必须放在侧滑菜单布局的前面, 因为 XML 元素按 z 序(层叠顺序)排列,并且抽屉式导航栏必须位于内容顶部。...gravity):打开边栏 void closeDrawer(int gravity):关闭边栏 boolean isDraweropen(int gravity):判断边栏是否打开 参数gravity必须与...mDrawerLayout.setDrawerListener(new DrawerListener() { /** * 当抽屉滑动状态改变的时候被调用 * 状态值是STATE_IDLE
Activity自带actionBar 2.从Android3.0(APIlever11)开始,所有使用Theme.Holo主题(或者它的子类)的activity都包含了actionbar,当 targetSdkVersion...(); } return drawerToggle.onOptionsItemSelected(item)|super.onOptionsItemSelected(item); } // 当搜索提交的时候...default: return ; super.onOptionsItemSelected(item); } } 返回按钮的处理 在不是主要入口的其他所有屏中(activity不位于主屏时...actionBar.addTab(tab1); DrawerLayout 在布局里这样写就行了 DrawerLayout xmlns...> 可以一进如程序就打开一个抽泣 drawerLayout=(DrawerLayout) findViewById(R.id.dl); drawerLayout.openDrawer
Activity自带actionBar 2.从Android3.0(APIlever11)开始,所有使用Theme.Holo主题(或者它的子类)的activity都包含了actionbar,当 targetSdkVersion...(); } return drawerToggle.onOptionsItemSelected(item)|super.onOptionsItemSelected(item); } // 当搜索提交的时候...default: return ; super.onOptionsItemSelected(item); } } 返回按钮的处理 在不是主要入口的其他所有屏中(activity不位于主屏时...actionBar.addTab(tab1); DrawerLayout 在布局里这样写就行了 DrawerLayout xmlns:android...> 可以一进如程序就打开一个抽泣 drawerLayout=(DrawerLayout) findViewById(R.id.dl); drawerLayout.openDrawer(Gravity.RIGHT
R.id.content,new content1()); //对应的java class transaction.commit(); //一定不要忘记commit,否则不会显示...每个文件夹下有两个文件,一个是用来承载控件的fragment,另一个是与之对应的viewModel。...fragment用来显示ui界面,而viewmodel则是给ui界面提供数据,view里的每一个控件在viewmodel里都有一个对应的数据对象,如果要更新view上的ui界面,只需要更新viewmodel...里与之对应的对象即可。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
等我们真正去使用时,是没有影响的,去不去掉都行。 3....这个是用来控制NavHost显示Fragment,虽然我刚才在导航图nav_graph.xml中指明了第一个要显示的Fragment,但是它还缺少这个显示的动机,而这个动机由NavController来提供...惊不惊喜意不意外?明明这个NavController还什么都没有做的,为什么就可以显示了呢?实际上它已经在工作了,只是你没有注意而已。...神不神奇?app:defaultNavHost="true"表示这个回退栈由NavController来管理,当这个退无可退时才会调用Activity的回退栈。默认就是false,可以不加。 6....进入activity_mian.xml修改BottomNavigationView <!
MVP模式可以分离显示层与逻辑层,它们之间通过接口进行通信,降低耦合。理想化的MVP模式可以实现同一份逻辑代码搭配不同的显示界面,因为它们之间并不依赖与具体,而是依赖于抽象。...这使得Presenter可以运用于任何实现了View逻辑接口的UI,使之具有更广泛的适用性,保证了灵活度。...,空布局和错误布局的显示… 2.Base封装 1.BaseView package com.hankkin.xlibrary.mvp; import android.view.View; /**...android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView...mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener
MVP模式可以分离显示层与逻辑层,它们之间通过接口进行通信,降低耦合。理想化的MVP模式可以实现同一份逻辑代码搭配不同的显示界面,因为它们之间并不依赖与具体,而是依赖于抽象。...这使得Presenter可以运用于任何实现了View逻辑接口的UI,使之具有更广泛的适用性,保证了灵活度。...android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView...mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() {...navigation = (BottomNavigationView) findViewById(R.id.navigation); navigation.setOnNavigationItemSelectedListener
领取专属 10元无门槛券
手把手带您无忧上云