全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android ToolBar控件详解及实例

ToolBar控件详解

在Activity中添加ToolBar

1.添加库

dependencies {
  ...
  compile "com.android.support:appcompat-v7:18.0.+"
}

2.Activity要继承AppCompatActivity

3.设置主题

使用ToolBar,要将系统默认的ActionBar隐藏掉

<application
  android:theme="@style/Theme.AppCompat.Light.NoActionBar"
  />

4.在XML添加ToolBar布局

<android.support.v7.widget.Toolbar
  android:id="@+id/my_toolbar"
  android:layout_width="match_parent"
  android:layout_height="?attr/actionBarSize"
  android:background="?attr/colorPrimary"
  android:elevation="4dp"
  android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
  app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

Material Design specification 建议设置 elevation 为 4dp

Toolbar放在Activity的顶部(等于废话)

5.设置ToolBar

在Activity的onCreate()方法中,调用setSupportActionBar()方法,把我们的ToolBar对象传递进去,将我们xml中添加的ToolBar设置为我们这个Activity页面的App Bar。

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_my);
  Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
  setSupportActionBar(myToolbar);
  }

现在,我们的页面中,应该就会有一个App Bar了,默认情况下,这个App Bar只会显示一个App的名字和一个带有下拉选项的按钮,也可以在App Bar上添加更多的选项按钮

添加并处理一个Action

ToolBar允许在上面添加操作按钮,但是因为ToolBar上空间是有限的,如果一个程序有太多的Action,那么可以将Action添加到下拉菜单中,而不显示在ToolBar上

添加一个Action按钮

可以在XML文件中定义所有我们想添加的操作按钮和下拉列表中的行为,如果想要添加Action,可以在 res/目录下创建一个新的XML文件,添加元素。例如这样

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

  <!-- "Mark Favorite", should appear as action button if possible -->
  <item
    android:id="@+id/action_favorite"
    android:icon="@drawable/ic_favorite_black_48dp"
    android:title="@string/action_favorite"
    app:showAsAction="ifRoom"/>

  <!-- Settings, should always be in the overflow -->
  <item android:id="@+id/action_settings"
     android:title="@string/action_settings"
     app:showAsAction="never"/>

</menu>

App:showAsAction 属性是用来设置Action显示在哪,如果我们设置 app:showAsAction =”ifRoom”(示例中最常用的一种方式) ,这个Action将显示在ToolBar上,如果ToolBar上没有足够的控件,则显示在下拉菜单中。如果在程序中设置为 app:showAsAction=”never”,那么这个Action将永远显示在下拉列表中,而不会显示在ToolBar上。
响应操作(回调)

当用户选择了一个Action后,系统会回调 onOptionsItemSelected() 方法并传递 MenuItem 对象,在 onOptionsItemSelected() 的实现中,调用 MenuItem.getItemId() 方法来确定按下了哪个项目。返回的 ID 与您在相应的 元素 Android: id 属性中声明的值匹配。

例如下面

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
    case R.id.action_settings:
      // User chose the "Settings" item, show the app settings UI...
      return true;

    case R.id.action_favorite:
      // User chose the "Favorite" action, mark the current item
      // as a favorite...
      return true;

    default:
      // If we got here, the user's action was not recognized.
      // Invoke the superclass to handle it.
      return super.onOptionsItemSelected(item);

  }
}

添加一个回到主界面的按钮

应用为了使用户可以方便的回到主界面,ToolBar可以添加一个按钮,直接返回到指定的主界面。

声明主界面(父界面)

需要在清单文件中通过设置 android: parentActivityName 属性声明,如果要支持旧版本的Android设备,需要定义 ,类似这样:

<application ... >
  ...

  <!-- The main/home activity (it has no parent activity) -->

  <activity
    android:name="com.example.myfirstapp.MainActivity" ...>
    ...
  </activity>

  <!-- A child of the main activity -->
  <activity
    android:name="com.example.myfirstapp.MyChildActivity"
    android:label="@string/title_activity_child"
    android:parentActivityName="com.example.myfirstapp.MainActivity" >

    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
      android:name="android.support.PARENT_ACTIVITY"
      android:value="com.example.myfirstapp.MainActivity" />
  </activity>
</application>

使用返回按钮

若要使用返回的按钮,需要调用setDisplayHomeAsUpEnabled()方法,类似这样:

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_my_child);

  // my_child_toolbar is defined in the layout file
  Toolbar myChildToolbar =
    (Toolbar) findViewById(R.id.my_child_toolbar);
  setSupportActionBar(myChildToolbar);

  // Get a support ActionBar corresponding to this toolbar
  ActionBar ab = getSupportActionBar();

  // Enable the Up button
  ab.setDisplayHomeAsUpEnabled(true);
}

添加Action Views

和上面 添加并处理一个Action 类似,只不过设置 showAsAction 为 “ifRoom|collapseActionView” 或者 “never|collapseActionView” 就可以了,类似这样

<item android:id="@+id/action_search"
   android:title="@string/action_search"
   android:icon="@drawable/ic_search"
   app:showAsAction="ifRoom|collapseActionView"
   app:actionViewClass="android.support.v7.widget.SearchView" />

这里我们添加的是一个带有搜索功能的Search按钮,如果我们要自定义一个自己的按钮,不添加 actionViewClass 即可

如果想要配置这个Action,可以在 onCreateOptionsMenu() 的回调里通过 getActionView() 获取到Search对象,类似这样:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main_activity_actions, menu);

  MenuItem searchItem = menu.findItem(R.id.action_search);
  SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);

  // Configure the search info and add any event listeners...

  return super.onCreateOptionsMenu(menu);6 
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # ToolBar控件  # ToolBar控件详解  # ToolBar  # android顶部(toolbar)搜索框实现代码  # Android顶部(toolbar)搜索框实现的实例详解  # Android中ActionBar和ToolBar添加返回箭头的实例代码  # Android ToolBar 修改边距的实现方法  # Android动态修改ToolBar的Menu菜单示例  # Android折叠式Toolbar使用完全解析(CollapsingToolbarLayout)  # Android自定义Toolbar使用方法详解  # Android基于Toolbar实现顶部标题栏及后退键  # 回调  # 设置为  # 自己的  # 的是  # 就会  # 放在  # 太多  # 列表中  # 菜单中  # 而不  # 只会  # 希望能  # 自定义  # 您在  # 按下  # 要将  # 在上面  # 谢谢大家  # 方法来  # 若要 


相关文章: 大连网站设计制作招聘信息,大连投诉网站有哪些?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  ui设计制作网站有哪些,手机UI设计网址吗?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何通过WDCP绑定主域名及创建子域名站点?  建站主机服务器选型指南与性能优化方案解析  建站上市公司网站建设方案与SEO优化服务定制指南  C++如何编写函数模板?(泛型编程入门)  如何快速搭建高效可靠的建站解决方案?  高防服务器租用如何选择配置与防御等级?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  建站之星后台密码遗忘如何找回?  电商网站制作价格怎么算,网上拍卖流程以及规则?  装修招标网站设计制作流程,装修招标流程?  css网站制作参考文献有哪些,易聊怎么注册?  seo网站制作优化,网站SEO优化步骤有哪些?  建站之星后台密码如何安全设置与找回?  c++怎么用jemalloc c++替换默认内存分配器【性能】  建站为何优先选择香港服务器?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  如何选择网络建站服务器?高效建站必看指南  宝塔新建站点为何无法访问?如何排查?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  图册素材网站设计制作软件,图册的导出方式有几种?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在云主机上快速搭建网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  网站制作价目表怎么做,珍爱网婚介费用多少?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  C++如何使用std::optional?(处理可选值)  内部网站制作流程,如何建立公司内部网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  香港服务器WordPress建站指南:SEO优化与高效部署策略  建站ABC备案流程中有哪些关键注意事项?  PHP 500报错的快速解决方法  如何用VPS主机快速搭建个人网站?  如何在IIS7中新建站点?详细步骤解析  制作企业网站建设方案,怎样建设一个公司网站?  建站之星代理商如何保障技术支持与售后服务?  相册网站制作软件,图片上的网址怎么复制?  如何在宝塔面板中修改默认建站目录?  如何高效利用亚马逊云主机搭建企业网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  建站之星后台密码遗忘?如何快速找回?  音响网站制作视频教程,隆霸音响官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。