ActionBar

简介:

  1. 取代3.0之前的标题栏,导时用v7包
  2. 提供一个用于识别应用程序的标示和用户的位置专属空间
  3. 在不同的应用程序之间提供一致的导航和视觉体验
  4. 突出Activity的关键操作(如“搜索”,创建,共享等),并且在可预见的方法内给用户提供快捷的访问

删除,添加:

  1. 默认拥有ActionBar: ActionBar actionBar = getSupportActionBar() ;
  2. 隐藏:actionBar.hide();

标题栏:

  1. 启用分离式操作栏:在<application>或<activity>元素中添加uiOptions="splitActionBarWhenNarrow"
  2. 导航栏使用应用图标响应两个操作之一:
    1. 返回应用的“主”Activity:
    2. 响应应用程序上级页面导航
    3. 当用户触摸这个图标时,系统会调用Activity带有android.R.id.home ID的onOptionsItemSelected方法。注意要使用应用图标来返回主页面,从Adroid4.0(API 14)开始,必须同过调用setHomeButtonEnabled(true)方法确保这个图标能够作为一个操作项

 菜单:

  在menu文件nnn.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/action_share"
        android:icon="@mipmap/ic_launcher"
        android:title="分享"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
        app:showAsAction="always"/>
    <!--app:actionViewClass="android.support.v7.widget.SearchView"必须使用v7包下-->
    <item
        android:id="@+id/action_search"
        android:icon="@mipmap/ic_launcher"
        android:title="搜索"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always"/>
</menu>

  在activity中找到相应的对象:

 1 package com.example.yang.actionbar_demo;
 2 import android.content.Intent;
 3 import android.os.Bundle;
 4 import android.support.v4.view.MenuItemCompat;
 5 /*注意到正确的包v7包*/
 6 import android.support.v7.app.ActionBar;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.support.v7.widget.SearchView;
 9 import android.support.v7.widget.ShareActionProvider;
10 import android.view.Menu;
11 import android.view.MenuItem;
12 import android.view.View;
13 import android.widget.Toast;
14 public class MainActivity extends AppCompatActivity implements ShareActionProvider.OnShareTargetSelectedListener {
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         ActionBar actionBar = getSupportActionBar() ;
20         /*隐藏*/
21 //        actionBar.hide();
22         /*作为图使用*/
23         actionBar.setHomeButtonEnabled(true);
24 //        actionBar.setDisplayHomeAsUpEnabled(true);
25     }
26     public void startActivity1_Click(View view) {
27         startActivity(new Intent(this,MainActivity1.class));
28     }
29     ShareActionProvider provider;
30     SearchView searchView ;
31 /*创建菜单*/
32     @Override
33     public boolean onCreateOptionsMenu(Menu menu) {
34         /*将位置文件nnn.xml导入对象menu*/
35         getMenuInflater().inflate(R.menu.nnnn, menu);
36         /*同过findItent方法拿到相应的MenuItem管理对象*/
37         MenuItem item = menu.findItem(R.id.action_share);
38         MenuItem item1 = menu.findItem(R.id.action_search);
39         /*通过MenuItemCompat拿到相应的对象*/
40         provider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
41 //        searchView = (SearchView) MenuItemCompat.getActionView(item1);
42 //        第二种获取searchView方法
43         searchView = (SearchView)item1.getActionView();
44         /*搜索事件监听*/
45         provider.setOnShareTargetSelectedListener(this);
46         searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
47             @Override
48             public boolean onQueryTextSubmit(String query) {
49                 Toast.makeText(getApplicationContext(),query,Toast.LENGTH_SHORT).show();
50                 return false;
51             }
52             @Override
53             public boolean onQueryTextChange(String newText) {
54                 return false;
55             }
56         });
57         /*调用父类方法*/
58         return super.onCreateOptionsMenu(menu);
59     }
60     @Override
61     public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
62         return false;
63     }
64 }

导航栏:

  在Activity中直接设置:

 1 import android.support.v4.app.FragmentTransaction;
 2 import android.support.v7.app.ActionBar;
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.widget.Toast;
 6 public class MainActivity2 extends AppCompatActivity implements ActionBar.TabListener{
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState){
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main2);
11         ActionBar actionBar = getSupportActionBar();
12         /*不推荐使用*/
13         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
14         /*标题栏不显示*/
15         actionBar.setDisplayShowTitleEnabled(false);
16         /*添加选项卡*/
17         actionBar.addTab(actionBar.newTab().setText("新闻").setTabListener(this));
18         actionBar.addTab(actionBar.newTab().setText("音乐").setTabListener(this));
19         actionBar.addTab(actionBar.newTab().setText("电影").setTabListener(this));
20         actionBar.addTab(actionBar.newTab().setText("娱乐").setTabListener(this));
21     }
22 /*FragmentTransaction:替换你想要的fragment*/
23     @Override
24     public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
25         Toast.makeText(this,tab.getText(),Toast.LENGTH_SHORT).show();
26     }
27     @Override
28     public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
29     }
30     @Override
31     public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
32     }
33 }
原文地址:https://www.cnblogs.com/uf0-java/p/6420660.html