編輯:關於Android編程
Action bar允許你為與當前應用上下文相關的最重要的action items添加action按鈕。那些直接顯示在action bar上的icon或者文字都被稱作action buttons。那些不適合action bar或者不是那麼重要的Actions將會被隱藏在action overflow(譯者注:action bar最右側的垂直的三個點)裡。
所有的action buttons和能夠在action overflow中訪問到的action都是在一個XML menu resource中被定義的。要為action
bar添加actions,首先在項目的res/menu/
目錄下創建一個新的XML文件。
為所有你想要添加到action bar中的item添加一個
元素。例如:
為了最好的適配Android iconography引導,你應該使用Action Bar Icon Pack中提供的icons。
上面的XML文件聲明了Search action在action bar有空間的時候會展示為action button,而Setting action始終都要出現在overflow中。 (默認情況下,所有的actions 都出啊先在overflow中,但是為每個action聲明不同的設計意圖其實是件好事。)
icon
屬性需要指定一個圖片資源ID。以@drawable/
開頭的資源必須是你以同樣的名字存放在項目的res/drawable/
目錄下的資源。例如,"@drawable/ic_action_search"
表示ic_action_search.png
。同樣的,title
屬性使用的是一個字符串資源,它在項目的res/values/
目錄下的XML文件中被定義,就像在 Building
a Simple User Interface中討論的那樣。
提示: 當為應用創建icons或者其他bitmap圖片時,為不同的屏幕密度提供不同的優化的版本相當重要。這個話題會在Supporting Different Screens中有更多的討論。
如果你的應用在使用Support Library,showAsAction
屬性並不能使用android:
這個命名空間。作為替代這個屬性是由Support
Library提供,並且你需要定義自己的XML命名空間同時使用它作為這個屬性的前綴。(自定義的XML命名空間應該基於應用名稱,但是你也可以取一個你想要的名字,同時它只在你聲明過的它的文件中有效。) 例如:
為了讓剛才的menu items顯示在action bar上,在你的activity中實現onCreateOptionsMenu()
這個回掉方法,並且為給定的參數Menu
對象設置對應的/menu目錄下的XML文件。例如:
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_activity_actions, menu); return super.onCreateOptionsMenu(menu); }
當用戶點擊任何一個action buttons 或者overflow中的action item,系統都會調用onOptionsItemSelected()
方法。在你對這個方法的實現中,調用參數MenuItem對象的getItemId()
來獲取表示被點擊的item的資源ID,這個值是你在相應的
元素中聲明的android:id
屬性的值。
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { case R.id.action_search: openSearch(); return true; case R.id.action_settings: openSettings(); return true; default: return super.onOptionsItemSelected(item); } }
在你的應用中,只要不是你的應用入口activity(activities that are not the "home" screen) 的所有activity都應該提供一個返回自己在應用層次結構中的邏輯父界面,通過點擊action bar上的Up按鈕。
當運行在Android 4.1 (API level 16) 或者更高版本的系統上時,或者當使用Support Library包提供的ActionBarActivity
時,使用Up導航需要你在manifest文件中聲明父activity,同時啟用action
bar的Up按鈕。
例如,下面顯示如何在manifest文件中定義一個父activity:
... ...
然後通過調用setDisplayHomeAsUpEnabled()
方法啟用action
bar的Up按鈕:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_displaymessage); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // If your minSdkVersion is 11 or higher, instead use: // getActionBar().setDisplayHomeAsUpEnabled(true); }
由於現在系統知道MainActivity
是DisplayMessageActivity
的父activity,當用戶點擊 Up button時,系統會自動導航到何時的父activity中——你沒有必要處理Up
button的點擊事件。
更多有關Up導航的信息,請查閱 Providing Up Navigation。
Android系統中的很多安全類軟件都支持垃圾清理,但總有一些不知名文件夾能逃過類似功能的“洗禮”。那麼,我們如何根據一些蛛絲馬跡了
程序入口//// LCBusinessTableViewController.m// 口碑頁面//// Copyright ? 2016年 LongChuang.
Android的消息機制其實在android的開發過程中指的也就是Handler的運行機制,這也就引出了android中常見的面試問題:簡述Handler、Looper、
在自定義控件這個學習系列裡,首先寫篇文章記錄一下View的繪制流程,壓壓驚:-P。也為以後的自定義控件實踐打個基礎。雖然講解View工作流程的文章很多,其中不乏很多精品文