ActionBar 定义起来不方便

toolbar: 最重要的特性,显示menu菜单,右上角三个点的菜单按钮,使用灵活

使用:1,布局文件,包裹LinearLayout 放imageView, 或者ImageButton

2,去除标题栏Action(清单文件中设置主题Theme.AppCompat.NoTitle)

3,setActionBar( toolbar ); Activity extends AppCompatActivity

4,创建menu文件夹下面的menu.xml文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto">
  4.  
  5. <item
  6. android:id="@+id/menu_search"
  7. android:title="搜索"
  8. android:icon="@drawable/actionbar_search_icon"
  9. app:showAsAction="always" /> // 总是显示在toolbar上
  10.  
  11. <item
  12. android:id="@+id/menu_search1"
  13. android:icon="@drawable/actionbar_search_icon"
  14. android:title="搜索1"
  15. app:showAsAction="ifRoom" /> //toolbar有地方就显示
  16.  
  17. <item
  18. android:id="@+id/menu_search2"
  19. android:icon="@drawable/actionbar_search_icon"
  20. android:title="搜索2"
  21. app:showAsAction="never" /> //是否作为菜单项,隐藏在右上角 的三个点里面
  22.  
  23. </menu>
  1. package cn.zhw.demo;
  2.  
  3. import android.nfc.tech.NfcB;
  4. import android.support.v4.app.FragmentTabHost;
  5. import android.support.v4.widget.DrawerLayout;
  6. import android.support.v7.app.ActionBarDrawerToggle;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.os.Bundle;
  9. import android.support.v7.widget.Toolbar;
  10. import android.view.Menu;
  11. import android.view.MenuItem;
  12. import android.widget.TabHost;
  13. import android.widget.Toast;
  14.  
  15. public class MainActivity extends AppCompatActivity {
  16.  
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21.  
  22. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  23. setSupportActionBar(toolbar);
  24. // setTitle("你好啊");
  25. getSupportActionBar().setTitle("heihehie");
  26. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  27.  
  28. DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
  29. ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
  30. this,drawerLayout,toolbar,R.string.app_name,R.string.app_name);
  31. drawerLayout.addDrawerListener(toggle);// 面板展开的监听设置给 Toogle
  32. toggle.syncState();// 初始化 toogle 的绘制内容
  33.  
  34. // 设置底部栏
  35. FragmentTabHost tabHost = (FragmentTabHost) findViewById(R.id.tabhost);
  36. tabHost.setup(this,getSupportFragmentManager(),R.id.container);// 初始化 tabhost
  37.  
  38. // 添加一个 tab
  39. TabHost.TabSpec tab1 = tabHost.newTabSpec("news");// 创建tab对象
  40. tab1.setIndicator("资讯");// 设置tab 内容
  41.  
  42. Bundle arg = new Bundle();
  43. arg.putString("content","资讯界面");
  44.  
  45. tabHost.addTab(tab1,TestFragment.class,arg);// 将tab添加到底部栏
  46.  
  47. // 再添加一个 Tab
  48. TabHost.TabSpec tab2 = tabHost.newTabSpec("tweet");
  49. tab2.setIndicator("动弹");
  50. Bundle arg2 = new Bundle();
  51. arg2.putString("content","动弹界面");
  52. tabHost.addTab(tab2,TestFragment.class,arg2);
  53. }
  54.  
  55. @Override
  56. // 为 Activity 生成菜单,ToolBar已经被设置为标题栏,这个菜单会自动显示到 ToolBar 上
  57. public boolean onCreateOptionsMenu(Menu menu) {
  58. getMenuInflater().inflate(R.menu.activity_main,menu);
  59.  
  60. return super.onCreateOptionsMenu(menu);
  61. }
  62.  
  63. @Override
  64. // 目录菜单的点击响应
  65. public boolean onOptionsItemSelected(MenuItem item) {
  66.  
  67. switch (item.getItemId()){
  68. case R.id.menu_search:
  69. Toast.makeText(this, "跳转到搜索界面", Toast.LENGTH_SHORT).show();
  70. break;
  71. }
  72.  
  73. return super.onOptionsItemSelected(item);
  74. }
  75. }

DrawerLayout,ToolBar 和 TabHost 的使用的更多相关文章

  1. 安卓Design包之NavigationView结合DrawerLayout,toolbar的使用,FloatingActionButton

    注意:使用前需要添加Design依赖包,使用toolbar时需要隐藏标题头 FloatingActionButton 悬浮按钮:FloatingActionButton是重写ImageView的,所有 ...

  2. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果

    在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...

  3. 安卓Design包之Toolbar控件的使用

    转自:ToolBar的使用 ToolBar的出现是为了替换之前的ActionBar的各种不灵活使用方式,相反,ToolBar的使用变得非常灵活,因为它可以让我们自由往里面添加子控件.低版本要使用的话, ...

  4. android中抽屉布局DrawerLayout的使用

    这个抽屉布局类似于手机QQ的主界面,点击左上角头像,会从界面左侧弹出一个抽屉,展示一些内容. 首先是布局界面activity_main.xml: <?xml version="1.0& ...

  5. Androd Toolbar 的简单使用(转)

    14年Android开发者大会提出了Android5.0 系统以及 材料设置 Material Design.在 材料设计中推出了大量的UI效果,其中某些功能 已添加进 兼容包,所以可以在低版本中来实 ...

  6. <Android 基础(七)> DrawerLayout and NavigationView

    介绍 DrawerLayout是Support Library包中实现了侧滑菜单效果的控件 android.support.v4.widget.DrawerLayout NavigationView是 ...

  7. Android 高大上的侧滑菜单DrawerLayout,解决了不能全屏滑动的问题

    DrawerLayout预览 DrawerLayout主要功能就是 实现侧滑菜单效果的功能,并且可以通过增加一些设置来实现高大上的效果,那么就请看动态图:   注意左上角那个图标,有木有很好玩,哈哈. ...

  8. 使用Design包实现QQ动画侧滑效果和滑动菜单导航

    Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个supp ...

  9. 安卓Design之NavigationView的使用

    前面讲解了Design包下的TabLayout的使用,下面将带来NavagationView和DrawLayout以及toolbar的联动. 项目已经同步至:https://github.com/na ...

随机推荐

  1. WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用

    WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用 摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命 ...

  2. iOS获取程序运行平台

    下面这个博客里面写的很清楚 http://blog.sina.com.cn/s/blog_890a737301014fim.html

  3. HDU3930(离散对数与原根)

    题目:Broot 题意:给出k,m,newx的值,求方程x^k(mod m)=newx的解,其中m为素数. 解法步骤: (1)先暴力求m的原根g (2)大步小步求g^t1(mod m)=newx (3 ...

  4. easyui tree 的数据格式转换

    一般用来储存树数据的数据库表都含有两个整型字段:id pid,所以我们查询出来的List一般是这样的(约定pId为-1的节点为根节点): var serverList = [ {id : 2,pid ...

  5. linux memcached 安装

    下载并安装Memcache服务器端服务器端主要是安装memcache服务器端.下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz ...

  6. PHP5.3 里面数组的的实现方式

    typedef struct _Bucket { char *key; void *value; struct _Bucket *next; } Bucket; typedef struct _Has ...

  7. VC++实现小托盘的处理

    // 实验一Dlg.cpp : implementation file // #include "stdafx.h" #include "实验一.h" #inc ...

  8. [C++STDlib基础]关于C标准输入输出的操作——C++标准库头文件<cstdio>

    网上实例 总结 /* _STD_BEGIN using _CSTD clearerr; using _CSTD fclose; using _CSTD feof; using _CSTD ferror ...

  9. autotools入门笔记(二)——创建和使用静态库、动态库

    带有静态库或者动态库的工程的构建过程与上一节()只包含一个源文件的工程的构建过程是类似的.只是对于复杂的工程,如果包含多个还有源文件的目录时,需要对每个包含源文件的目录执行构建过程,另外创建和使用库文 ...

  10. 结构-行为-样式-Javascript 深度克隆函数(转)

    突然想到有一回面试的时候有一个问题一直挂在心头,于是乎在网上找了找,这个比较好: //深度克隆 function deepClone(obj) { var result, oClass = isCla ...