android drawLayout抽屉布局
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抽屉布局相关推荐
- android 导航抽屉_Android导航抽屉示例教程
android 导航抽屉 In this tutorial we'll implement a Navigation Drawer in our android application. Androi ...
- xamarin android 布局,Xamarin.Android 上中下布局
xml代码: xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_par ...
- android studio 抽屉,Android Studio 的抽屉导航
Android的抽屉导航: 文件夹布局: layout布局文件夹: activity_main.xml 主入口文件 app_bar_main.xml 主内容文件:viewPager为多个页面,可以滑动 ...
- android左侧抽屉,Android控件之左侧抽屉菜单
Android 抽屉效果的导航菜单实现 抽屉效果的导航菜单 看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而 ...
- Android横向伸缩,Android 实现伸缩布局效果示例代码
最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...
- android的五大布局(layout)
Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建 筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLa ...
- Android TabLayout(选项卡布局)简单用法实例分析
本文实例讲述了Android TabLayout(选项卡布局)简单用法.分享给大家供大家参考,具体如下: 我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合.达到 ...
- android布局优化方案,Android启动优化-布局优化
Android启动优化-布局优化 安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入 ...
- android中自适应布局教程,Android自适应布局设计技巧
由于目前在做的一款app需要适配手机和平板,所以我在研究怎么构建可适应所有屏幕尺寸的布局方法. 在web的自适应布局上我有很多经验,比如使用网格流,CSS3中的media queries属性等等,这些 ...
最新文章
- 【数据结构】B-Tree, B+Tree, B*树介绍
- 【工具】模板引擎 Velocity
- python中fetchall函数_python中查询数据库时fetchone()函数和fetchall()函数的区别
- 动态规划编程面试_面试的前25大动态编程问题
- Spring Boot整合Servlet,Filter,Listener,访问静态资源
- PTA21、K好数 (10 分)
- kubernetes 启动_如何启动和组织Kubernetes聚会
- socket 套接字
- Exp4恶意软件分析 20154326杨茜
- Java解析魔兽争霸3录像W3G文件(二):压缩数据块解压合并
- ug录入属性_ug表格属性
- 运动目标检测MATLAB实现
- Vue搭脚手架及创建项目
- java 提示语法错误_java常见语法错误
- mysql数据备份与导入
- V831——车牌识别
- vue使用阿里云视频点播
- 高等数学笔记-苏德矿-第九章-重积分(Ⅱ)-三重积分
- Java 工厂设计模式
- 简化SQL式计算之行间计算
热门文章
- linux rc.local权限,Linux开机启动rc.local不执行分析
- ide 两个模块的jdk版本不一样_Java平台模块系统(3)- JDK工具
- https 443 怎么改成80_阿里云购买免费https证书并用nginx配置代理详解(2020年9月)...
- 建立一个lstm_基于LSTM的双色球预测(一)
- mysql 按月建表_MySQL之存储过程按月创建表
- PostgreSQL中UUID的完整指南
- 带有审计表的实体框架核心(EF Core)
- Blazor 状态管理
- php矢量瓦片,矢量瓦片 - SegmentFault 思否
- ajax表单图片,js中使用ajax上传一个带有图片的表单数据