【ActionBar的使用】

在AS工程中使用ActionBar

简单实用:

1、功能清单文件中指定主题标签属性Theme.Holo或其子类

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

2、可以自己指定显示的图标,默认是应用的图标

<activity
             android:name=".UI.MainActivity"
             android:logo="@drawable/icon" />

3、在Activity中设置属性

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

        android.app.ActionBar actionBar= getActionBar();
        actionBar.show();//设置显示
        //actionBar.hide();//设置隐藏
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayShowHomeEnabled(true);//以上两句是设置可以让actionBar的图标可以响应点击事件
        actionBar.setDisplayHomeAsUpEnabled(true);//这一行用于返回效果
    }

也可以设置Activity标签属性来设置隐藏

<activity
     android:name=".UI.WelComeActivity"
      android:theme="@android:style/Theme.NoTitleBar">

4、在res资源目录下创建一个menu文件夹,在menu文件夹创建一个actionbar_menu.xml

  android:showAsAction :标签属性,根据需要自行设置

  android:title :一般都设置,根据需要,但并不一定会显示,根据showAsAction标签影响

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_seek"
        android:showAsAction="always"
        android:actionViewClass="android.widget.SearchView"
        android:title="搜索" />
    <item
        android:id="@+id/menu_history"
        android:showAsAction="never"
        android:title="查看历史" />
    <item
        android:id="@+id/menu_down"
        android:showAsAction="never"
        android:title="查看下载" />
</menu>

fRoom会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。当然个
数并不仅仅局限于4个,依据屏幕的宽窄而定
never永远不会显示。只会在溢出列表中显示,而且只显示标题,所以在定义item的时候,最好
把标题都带上。
always无论是否溢出,总会显示。
withTextwithText值示意Action bar要显示文本标题。Action bar会尽可能的显示这个
标题,但是,如果图标有效并且受到Action bar空间的限制,文本标题有可
能显示不全。
   collapseActionView  声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,
这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。
一般要配合ifRoom一起使用才会有效果。

5、重写回调方法,就可以显示了

@Override
     public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.actionbar_menu, menu);
         return super.onCreateOptionsMenu(menu);
     }







6、重写点击回调方法,根据需要添加代码

  android.R.id.home默认指定的是左上角的图标点击响应

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            Toast.makeText (this, "你点击了“home”按键!" , Toast.LENGTH_SHORT).show() ;
            return true;
        case R.id. menu_seek:
            Toast.makeText (this, "你点击了“搜索”按键!" , Toast.LENGTH_SHORT).show() ;
            return true;
        case R.id. menu_down:
            Toast.makeText (this, "你点击了“查看下载”按键!" , Toast.LENGTH_SHORT).show() ;
            return true;
        case R.id. menu_history:
            Toast.makeText (this, "你点击了“查看历史”按键!" , Toast.LENGTH_SHORT).show() ;
            return true;
        default:
            return super .onOptionsItemSelected(item);
    }
}

一般左上角的图标点击都是回退到主界面,在图标的点击响应添加代码

case android.R.id.home:
    //finish();这个只是简单的销毁了当前的界面
    Intent upIntent = NavUtils.getParentActivityIntent(this);//获取到跳转至父Activity的Intent
    //如果父Activity和当前Activity是在同一个Task中的,则直接调用navigateUpTo()方法进行跳转
    if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
        android.support.v4.app.TaskStackBuilder.create(this)
                   .addNextIntentWithParentStack(upIntent)
                   .startActivities();
    } else {//如果不是在同一个Task中的,则需要借助TaskStackBuilder来创建一个新的Task
        upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        NavUtils.navigateUpTo(this, upIntent);
    }
    Toast.makeText(this, "你点击了“home”按键!", Toast.LENGTH_SHORT).show();
return true;


分享键的使用:

menu文件 actionbar_menu.xml中加入一个item

<item
        android:id="@+id/action_share"
        android:actionProviderClass="android.widget.ShareActionProvider"
        android:showAsAction="ifRoom"
        android:title="分享" />

//实现分享ActionMenu显示
        MenuItem shareItem = menu.findItem(R.id.action_share);
        android.widget.ShareActionProvider provider = (android.widget.ShareActionProvider) shareItem.getActionProvider();
        intent = new Intent(Intent.ACTION_SEND);
        intent.setType("image/*");
        provider.setShareIntent(intent);

搞定


模拟器上没有几个分享选项,如果真机的话会更多一点。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值