DrawerLayout和toolbar的使用
onPostCreate()是Activity完全启动后的调用:在完全启动后的回调设置toolbar 然后在使用
AppCompatActivity 时style要设置为何appCompat相关的样式,不然会报错:
You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法
@Nullable doesn't work if Butterknife binds view from supersuperclass #389
android:layout_width="match_parent" android:layout_height="match_parent"不然也会报错:DrawerLayout must be measured with MeasureSpec.EXACTLY.解释: http://stackoverflow.com/questions/25864323/drawerlayout-must-be-measured-with-measurespec-exactly Toolbar 使用的style:
<style name="ToolbarThemem" parent="AppTheme.PopupOverlay"> <item name="android:background">?attr/colorPrimary</item> 设置背景颜色 <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:fitsSystemWindows">true</item> <item name="android:minHeight">?attr/actionBarSize</item> 设置最小高度
<!-- android:textColorPrimary is the color of the title text in the Toolbar, in the Theme.AppCompat theme: --><item name="android:textColorPrimary">@color/white</item> <!-- android:textColorPrimaryInverse is the color of the title text in the Toolbar, in the Theme.AppCompat.Light theme: --><item name="android:textColorPrimaryInverse">@color/white</item> <!-- android:actionMenuTextColor is the color of the text of action (menu) items in the Toolbar, at least in the Theme.AppCompat theme. For some reason, they already get the textColorPrimary when running on API 21, but not on older versions of Android, so this is only necessary to support older Android versions.--><item name="actionMenuTextColor">@color/white</item><!-- android:textColorSecondary is the color of the menu overflow icon (three vertical dots) --><item name="android:textColorSecondary">@color/white</item> <!-- This would set the toolbar's background color, but setting this also changes the popup menu's background, even if we define popupTheme for our <Toolbar> --> <item name="android:colorBackground">?attr/colorPrimary</item>
</style> AppTheme.PopupOverlay 是系统提供的一个默认Toolbar 的主题: <?xml version="1.0" encoding="utf-8"?>
<!-- android:minHeight="?attr/actionBarSize"/>系统的配置--> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:fitsSystemWindows="true" xmlns:android="http://schemas.android.com/apk/res/android"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/msc_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:layout_alignParentTop="true" android:minHeight="?attr/actionBarSize" app:popupTheme="@style/ThemeToolbar" app:theme="@style/ThemeToolbar" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="5dp" android:layout_below="@id/msc_toolbar" android:background="@color/white"> <TextView android:id="@+id/noThingsMessage" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="30dp" android:textSize="20dp" android:gravity="center_horizontal" android:visibility="gone"/> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/frame"/> </LinearLayout> </RelativeLayout><android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/drawer_header" android:background="?attr/colorPrimary" app:itemIconTint="@color/white" app:itemTextColor="@color/white" app:menu="@menu/menu_main" /></android.support.v4.widget.DrawerLayout>
//可以在onCreate() 或者onPostCreate() 方法中去显示 Toolbar 效果 :@Overrideprotected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mscToolbar = (Toolbar) findViewById(R.id.msc_toolbar); navigationView = (NavigationView) findViewById(R.id.navigation_view); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); //TODO eventually remove if everything has the bar if (mscToolbar != null) { setSupportActionBar(mscToolbar); getSupportActionBar().setTitle(title); getSupportActionBar().setHomeAsUpIndicator(getResources().getDrawable(R.drawable.ic_menu_white_24dp)); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }} 然后就是使用到了
navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { menuItem.setChecked(true); drawerLayout.closeDrawers(); Intent intent = null; switch (menuItem.getItemId()) { case R.id.drawer_about: if (BaseActivity.this.getClass().equals(AboutActivity.class)) return true; intent = new Intent(BaseActivity.this, AboutActivity.class); break;....... //Toolbar 实现DrawerLayout 和图标互动的效果:
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);drawer.setDrawerListener(toggle);toggle.syncState();
DrawerLayout和toolbar的使用的更多相关文章
- 修改DrawerLayout 和toolbar 配合navigation的颜色
大家都知道DrawerLayout 和toolbar 结合能出来高大上的效果. 使用到一个ActionBarDrawerToggle类. 那么怎么修改DrawerToggle的颜色呢,搜索了很多中文网 ...
- DrawerLayout,ToolBar 和 TabHost 的使用
ActionBar 定义起来不方便 toolbar: 最重要的特性,显示menu菜单,右上角三个点的菜单按钮,使用灵活 使用:1,布局文件,包裹LinearLayout 放imageView, 或者I ...
- Android——使用Toolbar + DrawerLayout快速实现高大上菜单侧滑(转)
今天就来使用官方支持库来快速实现这类效果,需要使用到Toolbar和DrawerLayout,详细步骤如下:(如果你还不知道这两个Widget,先自己Google吧~) 1.首先需要添加appcomp ...
- 使用Toolbar + DrawerLayout快速实现高大上菜单侧滑
如果你有在关注一些遵循最新的Material Design设计规范的应用的话(如果没有,假设你有!),也许会发现有很多使用了看起来很舒服.很高大上的侧滑菜单动画效果,示例如下(via 参考2): 今天 ...
- Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...
- Toolbar的使用
项目来源: https://github.com/xuwj/ToolbarDemo#userconsent# 一.V7包升级问题 折腾好久,终于解决 <style name="AppT ...
- 【Android - V】之DrawerLayout的使用
DrawerLayout是Android V4包中的一个布局控件,用来实现一个抽屉样式的布局. DrawerLayout通过设置子视图的layout_gravity来决定子视图停靠在屏幕的哪个边缘外侧 ...
- Androd Toolbar 的简单使用(转)
14年Android开发者大会提出了Android5.0 系统以及 材料设置 Material Design.在 材料设计中推出了大量的UI效果,其中某些功能 已添加进 兼容包,所以可以在低版本中来实 ...
- 【Android - 控件】之V - DrawerLayout的使用
DrawerLayout是Android V4包中的一个布局控件,用来实现一个抽屉样式的布局. DrawerLayout通过设置子视图的layout_gravity来决定子视图停靠在屏幕的哪个边缘外侧 ...
随机推荐
- 移动web经验积累
1.从最小宽度时候开发,调试到iphone4来开发 2.宽度百分比,高度由具体内容决定, 3.文字需要设置最大高度,溢出隐藏 white-space: nowrap; text-overflow: e ...
- FusionCharts xml入门教程
由于项目需求需要做一个报表,选择FusionCharts作为工具使用.由于以 前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比 ...
- 一个Highcharts的例子
关键字:Highcharts <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Typ ...
- PowerDesigner 如何添加每个表中共用的字段及自动添加注释
PowerDesigner 如何添加每个表中共用的字段: 有时候在创建表的时候会有一些共用的字段,但是每一张表都要去创建,这样做很麻烦,特别是这样重复的工作,稍不留意就会出现问题,实际上在PD中有这样 ...
- BZOJ 1707: [Usaco2007 Nov]tanning分配防晒霜
Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...
- 防御XSS攻击的七条原则
本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:<Stored and Reflected XSS ...
- 【网络流24题】No.9 方格取数问题 (二分图点权最大独立集)
[题意] 在一个有 m*n 个方格的棋盘中, 每个方格中有一个正整数. 现要从方格中取数, 使任意 2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. 输入文件示例inp ...
- FFMPEG-数据结构解释(AVCodecContext,AVStream,AVFormatContext)
http://blog.csdn.net/yuan892173701/article/details/8702333 AVCodecContext 这是一个描述编解码器上下文的数据结构,包含了众多编 ...
- 几个RTP的开源实现
玩了两天rtp协议,基本把rtsp/rtcp/rtp/rtmp/srtp/strcp/mms,几个协议的区别和概念弄明白了. 这里记录一下. rtsp:类似用户界面操作,和Http比较类似,提供播放, ...
- Multi-bit per cell storage
Memories Scaling 其他的的半导体存储器的制程一般2年为一个升级周期,但是nand flash 存储器的制程升级周期和他们比起来只有1年.这种更快的制程升级导致SLC NAND ...