Android中通过ActionBar为标题栏添加搜索及分享视窗

Android中通过ActionBar为标题栏添加搜索及分享视窗,第1张

概述在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果。ActionBar的主要目的是:

在AndroID3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的Actionbar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果。Actionbar的主要目的是:

1.提供一个用于识别应用程序的标示和用户的位置的专用空间。

2.在不同的应用程序之间提供一致的导航和视觉体验。

3.突出Activity的关键 *** 作(如“搜索”、“创建”、“共享”等),并且在可预见的方法内给用户提供快捷的访问。

今天我们就简单梳理一下如何通过Actionbar为标题添加“搜索”和“分享”的 *** 作视窗,如下图:

*** 作视窗是作为 *** 作项目按钮的替代品显示在 *** 作栏中的一个可视构件。例如,如果你有一个用于搜索的可选菜单项,你可以用SearchvIEw类来替代 *** 作栏上的搜索按钮。

要个菜单资源中的一个项目声明一个 *** 作视窗,你既可以使用androID:actionLayout属性也androID:actionvIEwClass属性来分别指定一个布局资源或要使用的可视构件类。

与 *** 作视窗类似, *** 作提供器(由ActionProvIDer类定义的)用一个定制的布局代替一个 *** 作项目,它还需要对所有这些项目行为的控制。当你在 *** 作栏中给一个菜单项声明一个 *** 作项目时,它不仅要一个定制的布局来控制这个菜单项的外观,而且当它在显示在溢出菜单中时,还要处理它的默认事件。无论是在 *** 作栏中还是在溢出菜单中,它都能够提供一个子菜单。例如,ActionProvIDer的扩展类ShareActionProvIDer,它通过在 *** 作栏中显示一个有效的共享目标列表来方便共享 *** 作。与使用传统的调用ACTION_SEND类型Intent对象的 *** 作项不同,你能够声明一个ShareActionProvIDer对象来处理一个 *** 作项。这种 *** 作提供器会保留一个带有处理ACTION_SEND的Intent对象的应用程序的下拉列表,使这个菜单项显示在溢出菜单中。因此,当你使用像这样的 *** 作提供器时,你不必处理有关这个菜单项的用户事件。要给一个 *** 作项声明一个 *** 作提供器,就要在菜单资源中对应的<item>元素中定义androID:actionProvIDerClass属性,提供器要使用完整的类名。

第一步:建立menu资源文件

建立menu资源文件,设置搜索和分享的ITEM功能组件。

(1)新建menu文件夹,如图

(2)在menu资源文件夹下建立serch_share_menu.xml文件(自定义名称)

(3)serch_share_menu.xml组件部署代码:

<?xml version="1.0" enCoding="utf-8"?><menu xmlns:androID="http://schemas.androID.com/apk/res/androID"  xmlns:app="http://schemas.androID.com/apk/res-auto">  <item    androID:ID="@+ID/search"    app:actionVIEwClass="androID.support.v7.Widget.SearchVIEw"    androID:icon="@androID:drawable/ic_menu_search"    androID:orderIncategory="100"    androID:title="搜索"    app:showAsAction="always|collapseActionVIEw" />  <item    androID:ID="@+ID/share"    androID:icon="@androID:drawable/ic_menu_share"    androID:orderIncategory="200"    androID:title="共享"    app:actionProvIDerClass="androID.support.v7.Widget.ShareActionProvIDer"    app:showAsAction="ifRoom" /></menu>

第二步:java中功能实现代码MainActivity.java:

import androID.content.Intent;import androID.support.v4.vIEw.MenuItemCompat;import androID.support.v7.app.AppCompatActivity;import androID.os.Bundle;import androID.support.v7.Widget.SearchVIEw;import androID.support.v7.Widget.ShareActionProvIDer;import androID.vIEw.Gravity;import androID.vIEw.Menu;import androID.vIEw.MenuItem;import androID.Widget.Toast;/** * Created by panchengjia on 2016/12/23. */public class MainActivity extends AppCompatActivity {  SearchVIEw searchVIEw;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);  }  @OverrIDe  public boolean onCreateOptionsMenu(Menu menu) {    //使用菜单填充器获取menu下的菜单资源文件    getMenuInflater().inflate(R.menu.search_share_menu,menu);    //获取搜索的菜单组件    MenuItem menuItem = menu.findItem(R.ID.search);    searchVIEw = (SearchVIEw) MenuItemCompat.getActionVIEw(menuItem);    //设置搜索的事件    searchVIEw.setonqueryTextListener(new SearchVIEw.OnqueryTextListener() {      @OverrIDe      public boolean onqueryTextsubmit(String query) {       Toast t = Toast.makeText(MainActivity.this,query,Toast.LENGTH_SHORT);        t.setGravity(Gravity.top,0);        t.show();        return false;      }      @OverrIDe      public boolean onqueryTextChange(String newText) {        return false;      }    });    //获取分享的菜单子组件    MenuItem shareItem = menu.findItem(R.ID.share);    ShareActionProvIDer shareActionProvIDer = (ShareActionProvIDer) MenuItemCompat.getActionProvIDer(shareItem);    //通过setShareIntent调用getDefaultIntent()获取所有具有分享功能的App    shareActionProvIDer.setShareIntent(getDefaultIntent());    return super.onCreateOptionsMenu(menu);  }  //设置可以调用手机内所有可以分享图片的应用  private Intent getDefaultIntent() {    Intent intent = new Intent();    intent.setAction(Intent.ACTION_SEND);    //这里的类型可以按需求设置    intent.setType("image/*");    return intent;  }}

虽然用actionbar可以实现这些功能,但在各个安卓版本和定制Rom中的效果表现不一,导致严重的碎片化问题,所以Google在2015的IO大会上发布了系列的Material Design风格的控件。其中Toolbar是替代Actionbar的控件。后面我们也会简述Toolbar的简单用法。

以上所述是小编给大家介绍的AndroID中通过Actionbar为标题栏添加搜索及分享视窗,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的Android中通过ActionBar为标题栏添加搜索及分享视窗全部内容,希望文章能够帮你解决Android中通过ActionBar为标题栏添加搜索及分享视窗所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1147415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存