Android ActionBar的基本用法(轉自bigconvience)
1、ActionBar的簡介
ActionBar位於Activity的頂部,可用來顯示activity的標題、Icon、Actions和一些用於互動的View。它也可被用於應用的導航。
ActionBar 是在Android 3.0(API 11)中加入到SK中的,想在低版本中使用ActionBar有兩種選擇:使用http://actionbarsherlock.com 或使用Support Library v7。
下面是一張使用ActionBar的介面截圖:
其中,[1]是ActionBar的圖示,[2]是兩個action按鈕,[3]是overflow按鈕
2、使用ActionBar
開發API11以下的程式,首先必須在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子類,否則將無法使用ActionBar。
2.1 建立Actions
Actions即ActionBar中的每個互動項,可以在程式碼中建立Action,也可以在XML檔案中指定(位於res/menu)。在menu資原始檔中定義Action的方法如下:
- <menu xmlns:android="http://schemas.android.com/apk/res/android" >
-
<item
- android:id="@+id/action_refresh"
- android:orderInCategory="100"
- android:showAsAction="always"
- android:icon="@drawable/ic_action_refresh"
- android:title="Refresh"/>
- <item
- android:id="@+id/action_settings"
-
android:title="Settings">
- </item>
- </menu>
永遠顯示在ActionBar中,如果螢幕空間不夠則無法顯示,ifRoom表示螢幕空間夠的情況下顯示在ActionBar中,不夠的話就顯示在overflow中,never則表示永遠顯示在overflow中。
在Activity中建立ctionBar的Action程式碼位於onCreateOptionsMenu()中,下面一段程式碼展示了建立過程:
- @Override
- publicboolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.mainmenu, menu);
- returntrue;
- }
如果一個Action被單擊,對於activity中的onOptionsItemSelected()將被呼叫。該函式的傳入引數是一個MenuItem。通過判斷該MenuItem的Id,即可確認是哪個Action被單擊。下面程式碼展示了該函式的使用過程。
- Override
- publicboolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- // action with ID action_refresh was selected
- case R.id.action_refresh:
- Toast.makeText(this, "Refresh selected", Toast.LENGTH_SHORT)
- .show();
- break;
- // action with ID action_settings was selected
- case R.id.action_settings:
- Toast.makeText(this, "Settings selected", Toast.LENG
- .show();
- break;
- default:
- break;
- }
- returntrue;
- }
onCreateOptionsMenu()只會被呼叫一次。若想改變Menu,可以呼叫invalidateOptionsMenu(),這會使onCreateOptionsMenu()將會再次被呼叫。
3. 自定義ActionBar
3.1 改變ActionBar的顯示
在執行時顯示和隱藏ActionBar的方法如下:
- ActionBar actionBar = getActionBar();
- actionBar.hide();
- // more stuff here...
- actionBar.show();
- ActionBar actionBar = getActionBar();
- actionBar.setSubtitle("mytest");
- actionBar.setTitle("vogella.com");
可以使用如下程式碼隱藏導航按鈕。
- getWindow().
- getDecorView().
- setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
對於Android 4.4 (API 19)應用程式可以使用全屏模式,如下面程式碼所示。
- // This method hides the system bars and resize the content
- privatevoid hideSystemUI() {
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
- | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
- // remove the following flag for version < API 19
- | View.SYSTEM_UI_FLAG_IMMERSIVE);
- }
在螢幕很窄時(如在portra模式),使用Split action bar可以將所有的action顯示在螢幕底部,這樣可以講更有意義的元素如導航、標題等顯示在activity的頂部
啟用split action bar可在 AndroidManifest.xml中定義android:uiOptions="SplitActionBarWhenNarrow"
4. 在Fragment中給action bar新增action
在onCreate()中呼叫 setHasOptionsMenu(true)。Android Framework會呼叫Fragement中的onCreateOptionsMenu()來向Activity的Menu中新增item。
5. 動態設定action bar
5.1. 自定義action bar中顯示的View
可以往action bar中新增自定義的View,如button或text。
可以使用ActionView的setCustomView,然後使用setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM)來Enable自定義View。
例子:先定義一個包含了EditText的佈局檔案。
- <?xml version="1.0" encoding="utf-8"?>
- <EditText xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/searchfield"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:inputType="textFilter" >
- </EditText>
- package com.vogella.android.actionbar.customviews;
- import android.app.ActionBar;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.KeyEvent;
- import android.widget.EditText;
- import android.widget.TextView;
- import android.widget.TextView.OnEditorActionListener;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ActionBar actionBar = getActionBar();
- // add the custom view to the action bar
- actionBar.setCustomView(R.layout.actionbar_view);
- EditText search = (EditText) actionBar.getCustomView().findViewById(R.id.searchfield);
- search.setOnEditorActionListener(new OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v, int actionId,
- KeyEvent event) {
- Toast.makeText(MainActivity.this, "Search triggered",
- Toast.LENGTH_LONG).show();
- return false;
- }
- });
- actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM
- | ActionBar.DISPLAY_SHOW_HOME);
- }
- }
5.2. Action View
Action View控制元件可以替換Action bar的Action按鈕圖示。可以利用這個特點將某個Action項替換成一個ProgressBar。可通過android:actionLayout或android:actionViewClass來定義一個佈局檔案或Widg來作為Action的action view。
Action View使用的效果圖如下。
首先是兩個佈局檔案,第一個用於action view
- <?xml version="1.0" encoding="utf-8"?>
- <ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/progressBar2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- </ProgressBar>
- <menu xmlns:android="http://schemas.android.com/apk/res/android" >
- <item
- android:id="@+id/menu_settings"
- android:orderInCategory="100"
-
相關推薦
Android ActionBar的基本用法(轉自bigconvience)
1、ActionBar的簡介 ActionBar位於Activity的頂部,可用來顯示activity的標題、Icon、Actions和一些用於互動的View。它也可被用於應用的導航。 ActionBar 是在Android 3.0(API 11)中加入到SK中的
黃聰:ffmpeg基本用法(轉)
sca wid cal ner aspect mp4 動態文本 tegra 控制輸出 FFmpeg FFmpeg 基本用法 本課要解決的問題 1.FFmpeg的轉碼流程是什麽? 2.常見的視頻格式包含哪些內容嗎? 3.如何把這些內容從視頻文件中抽取出來? 4.如
Android ContentProvider基本用法
truct 數據共享 implement notify username 資源 per mime類型 exc 轉自:https://www.jianshu.com/p/601086916c8f 一、基本概念 ContentProvider是Android系統中提
正則表示式matcher.group用法--轉自winter8
正則表示式matcher.group用法 部落格分類: 演算法 本貼來自 http://hi.baidu.com/cnjsp/blog/item/f5449d824c5102
Android的基本元件和自定義檢視
Android的基本元件 1 Activity 1.1 Activity代表手機的一個螢幕 1.2 一個Android程式由多個Activity組成,即:一個Android程式由多屏內容組成 1.3 Activity相當於一個展板
netstat常見基本用法(轉)
查看 我們 一個 端口 png root -a 等待 數據 netstat 簡介 Netstat 是一款命令行工具,可用於列出系統上所有的網絡套接字連接情況,包括 tcp, udp 以及 unix 套接字,另外它還能列出處於監聽狀態(即等待接入請求)的套接字。如果你想確認系
ffmpeg基本用法(轉)
FFmpeg FFmpeg 基本用法 本課要解決的問題 1.FFmpeg的轉碼流程是什麼? 2.常見的視訊格式包含哪些內容嗎? 3.如何把這些內容從視訊檔案中抽取出來? 4.如何從一種格式轉換為另一種格式? 5.如何放大和縮小視訊? 6.如何旋轉,翻轉,填充,裁剪,模糊,銳化視訊? 7.如何給視訊加logo
Android Study之跳轉自啟動管理頁
LZ-Says:話說現在流氓軟體多不勝數,在反感的同時,我們確實應該從技術的角度去分析,為什麼他們能夠做到所謂的流氓呢?技術不分錯對,關鍵在於使用技術的人去如何運用相關技術~ 前言 話說,最近專案要求軟體自啟動,腦子一想,靜態註冊廣播,監聽使用者
Android startActivityForResult基本用法
startActivityForResult和startActivity的區別是一個是帶值傳輸,一個是直接跳轉 具體用法如下: activity_main: <RelativeLayout xm
Android ActionBar的基本用法
1、ActionBar的簡介 ActionBar位於Activity的頂部,可用來顯示activity的標題、Icon、Actions和一些用於互動的View。它也可被用於應用的導航。 ActionBar 是在Android 3.0(API 11)中加入到SK中的,想在低
Android屬性動畫完全解析(上),初識屬性動畫的基本用法
fcm 操作 fad 擴展性 改變 內部使用 如果 轉載 @override 轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/43536355 在手機上去實現一些動畫效果算是件比較炫酷的事情,因此Andr
Notification的基本用法以及使用RemoteView實現自定義布局
解決 edi ngs 取消 ets lsp 過程 net tde Notification的作用 Notification是一種全局效果的通知,在系統的通知欄中顯示。既然作為通知,其基本作用有: 顯示接收到短消息、即時信息等 顯示客戶端的推送(廣告、優惠、新聞等)
java中正則表達式基本用法(轉)
code ack acea print 表達式 劃線 跟著 以及 n) https://www.cnblogs.com/xhj123/p/6032683.html 正則表達式是一種可以用於模式匹配和替換的規範,一個正則表達式就是由普通的字符(例如字符a到z)以及特殊字符(元
(轉)Linux中顯示空閑內存空間的free命令的基本用法
內存統計 bsp 包括 -o body 說明 swa 大於 art 這篇文章主要介紹了Linux系統中free命令的基本用法,用free命令查看內存空余信息是Linux系統入門學習中的基礎知識,需要的朋友可以參考下 free 命令顯示系統使用和空閑的內存情況,包
轉自老羅 Android應用程式資源的編譯和打包過程分析
原文地址 http://blog.csdn.net/luoshengyang/article/details/8744683 轉載自老羅,轉載請說明 我們知道,在一個APK檔案中,除了有程式碼檔案之外,還有很多資原始檔。這些資原始檔是通過An
轉自 老羅 Android應用程式資源管理器(Asset Manager)的建立過程分析
原文地址在 http://blog.csdn.net/luoshengyang/article/details/8791064 原創老羅,轉載請說明 在前面一篇文章中,我們分析了Android應用程式資源的編譯和打包過程,最終得到的應用程式資源就與
轉:Android 外部啟動activity,自定義action,action常量大全
https://www.cnblogs.com/guop/p/5067342.html Android 外部啟動activity,自定義action,action常量大全 從任意app,啟動另外一個app的activity: 1. Intent i =
轉自https://www.cnblogs.com/android-blogs/p/5818875.html
JAVA相關基礎知識 1、面向物件的特徵有哪些方面 1.抽象: 抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過
android AndoridManifest.xml 一些基本用法
AndoridManifest.xml 是一個xml 具體是什麼東西 百度比我解釋的好 我這邊只是一些常用的用法 首先上下程式碼 在這裡插入程式碼片 <application android:allowBackup="true"
Android 操作SQLite基本用法
一.SQLite的介紹 1.SQLite簡介 SQLite是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入 式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠了。它能夠支援 Window