Android drawLayout布局

Android 抽屉布局写法

<android.support.v4.widget.DrawerLayoutxmlns: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"tools:openDrawer="start" ><!-- As the main content view, the view below consumes the entirespace available using match_parent in both dimensions. --><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="?attr/colorPrimary"android:fitsSystemWindows="true"android:minHeight="?attr/actionBarSize" /><FrameLayoutandroid:id="@+id/content_frame"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout><!-- android:layout_gravity="start" tells DrawerLayout to treatthis as a sliding drawer on the left side for left-to-rightlanguages and on the right side for right-to-left languages.The drawer is given a fixed width in dp and extends the full height ofthe container. A solid background is used for contrastwith the content view. --><android.support.v7.widget.RecyclerViewandroid:id="@+id/left_drawer"android:scrollbars="vertical"android:layout_width="240dp"android:layout_height="match_parent"android:layout_gravity="left|start"android:choiceMode="singleChoice"android:divider="@null"app:layoutManager="LinearLayoutManager"/>
</android.support.v4.widget.DrawerLayout>

activity 代码编写

public class CustomNavActivity extends AppCompatActivity {private DrawerLayout mDrawerLayout;private NavigationView navigationView;private ActionBar actionBar;private ActionBarDrawerToggle mDrawerToggle;private LinearLayout ll_main;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_custom);initView();}private void initView() {ll_main = (LinearLayout) findViewById(R.id.ll_main);mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);navigationView = (NavigationView) findViewById(R.id.navigationView);Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);toolbar.setTitleTextColor(Color.WHITE);setSupportActionBar(toolbar);actionBar = getSupportActionBar();actionBar.setHomeButtonEnabled(true);actionBar.setDisplayHomeAsUpEnabled(true);mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open,R.string.drawer_close);mDrawerToggle.syncState();mDrawerLayout.setDrawerListener(mDrawerToggle);navigationView.setNavigationItemSelectedListener(naviListener);// 动态设置自定义menu文本Menu menu = navigationView.getMenu();MenuItem menuItem = menu.findItem(R.id.menu_findcourse);View actionView = MenuItemCompat.getActionView(menuItem);TextView tv_num = (TextView) actionView.findViewById(R.id.tv_num);tv_num.setText("50");}private NavigationView.OnNavigationItemSelectedListener naviListener = new NavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(MenuItem menuItem) {// 点击NavigationView中定义的menu item时触发反应switch (menuItem.getItemId()) {case R.id.menu_mycourse:menuItem.setChecked(true);ll_main.setBackgroundResource(R.color.color1);break;case R.id.menu_findcourse:menuItem.setChecked(true);ll_main.setBackgroundResource(R.color.color2);break;case R.id.menu_setting:menuItem.setChecked(true);ll_main.setBackgroundResource(R.color.color3);break;case R.id.menu_downloading:menuItem.setChecked(true);ll_main.setBackgroundResource(R.color.color4);break;case R.id.menu_exit:menuItem.setChecked(true);ll_main.setBackgroundResource(R.color.color5);break;}mDrawerLayout.closeDrawer(navigationView);return true;}};}

注意这里 toolbar与ActionBarDrawerToggle 进行了绑定,这样会在toolbar中实现动画效果,官方的例子中没有实现这样的效果,官方用的是getActionBar(),要实现这样的效果的方法是getSupportActionBar();

  • 另外build.gradler中是这样的
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})compile 'com.android.support:appcompat-v7:25.3.1'compile 'com.android.support.constraint:constraint-layout:1.0.2'testCompile 'junit:junit:4.12'compile 'com.android.support:support-v4:25.3.1'compile 'com.android.support:design:25.3.1'
}

官方文档
https://developer.android.google.cn/training/implementing-navigation/nav-drawer.html?hl=zh-cn

更加完整的demo下载
http://download.csdn.net/download/qq_26296197/10214046

android drawLayout抽屉布局相关推荐

  1. android 导航抽屉_Android导航抽屉示例教程

    android 导航抽屉 In this tutorial we'll implement a Navigation Drawer in our android application. Androi ...

  2. xamarin android 布局,Xamarin.Android 上中下布局

    xml代码: xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_par ...

  3. android studio 抽屉,Android Studio 的抽屉导航

    Android的抽屉导航: 文件夹布局: layout布局文件夹: activity_main.xml 主入口文件 app_bar_main.xml 主内容文件:viewPager为多个页面,可以滑动 ...

  4. android左侧抽屉,Android控件之左侧抽屉菜单

    Android 抽屉效果的导航菜单实现 抽屉效果的导航菜单 看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而 ...

  5. Android横向伸缩,Android 实现伸缩布局效果示例代码

    最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...

  6. android的五大布局(layout)

    Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建 筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLa ...

  7. Android TabLayout(选项卡布局)简单用法实例分析

    本文实例讲述了Android TabLayout(选项卡布局)简单用法.分享给大家供大家参考,具体如下: 我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合.达到 ...

  8. android布局优化方案,Android启动优化-布局优化

    Android启动优化-布局优化 安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入 ...

  9. android中自适应布局教程,Android自适应布局设计技巧

    由于目前在做的一款app需要适配手机和平板,所以我在研究怎么构建可适应所有屏幕尺寸的布局方法. 在web的自适应布局上我有很多经验,比如使用网格流,CSS3中的media queries属性等等,这些 ...

最新文章

  1. 【数据结构】B-Tree, B+Tree, B*树介绍
  2. 【工具】模板引擎 Velocity
  3. python中fetchall函数_python中查询数据库时fetchone()函数和fetchall()函数的区别
  4. 动态规划编程面试_面试的前25大动态编程问题
  5. Spring Boot整合Servlet,Filter,Listener,访问静态资源
  6. PTA21、K好数 (10 分)
  7. kubernetes 启动_如何启动和组织Kubernetes聚会
  8. socket 套接字
  9. Exp4恶意软件分析 20154326杨茜
  10. Java解析魔兽争霸3录像W3G文件(二):压缩数据块解压合并
  11. ug录入属性_ug表格属性
  12. 运动目标检测MATLAB实现
  13. Vue搭脚手架及创建项目
  14. java 提示语法错误_java常见语法错误
  15. mysql数据备份与导入
  16. V831——车牌识别
  17. vue使用阿里云视频点播
  18. 高等数学笔记-苏德矿-第九章-重积分(Ⅱ)-三重积分
  19. Java 工厂设计模式
  20. 简化SQL式计算之行间计算

热门文章

  1. linux rc.local权限,Linux开机启动rc.local不执行分析
  2. ide 两个模块的jdk版本不一样_Java平台模块系统(3)- JDK工具
  3. https 443 怎么改成80_阿里云购买免费https证书并用nginx配置代理详解(2020年9月)...
  4. 建立一个lstm_基于LSTM的双色球预测(一)
  5. mysql 按月建表_MySQL之存储过程按月创建表
  6. PostgreSQL中UUID的完整指南
  7. 带有审计表的实体框架核心(EF Core)
  8. Blazor 状态管理
  9. php矢量瓦片,矢量瓦片 - SegmentFault 思否
  10. ajax表单图片,js中使用ajax上传一个带有图片的表单数据