ActionBar

簡介:android

  1. 取代3.0以前的標題欄,導時用v7包
  2. 提供一個用於識別應用程序的標示和用戶的位置專屬空間
  3. 在不一樣的應用程序之間提供一致的導航和視覺體驗
  4. 突出Activity的關鍵操做(如「搜索」,建立,共享等),而且在可預見的方法內給用戶提供快捷的訪問

刪除,添加:app

  1. 默認擁有ActionBar: ActionBar actionBar = getSupportActionBar() ;
  2. 隱藏:actionBar.hide();

標題欄:ide

  1. 啓用分離式操做欄:在<application>或<activity>元素中添加uiOptions="splitActionBarWhenNarrow"
  2. 導航欄使用應用圖標響應兩個操做之一:
    1. 返回應用的「主」Activity:
    2. 響應應用程序上級頁面導航
    3. 當用戶觸摸這個圖標時,系統會調用Activity帶有android.R.id.home ID的onOptionsItemSelected方法。注意要使用應用圖標來返回主頁面,從Adroid4.0(API 14)開始,必須同過調用setHomeButtonEnabled(true)方法確保這個圖標可以做爲一個操做項

 菜單:ui

  在menu文件nnn.xml中:設置菜單內容:this

<?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中找到相應的對象:spa

 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 }

導航欄:code

  在Activity中直接設置:xml

 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 }
相關文章
相關標籤/搜索