標籤:actionbar android
轉載請註明出處:http://blog.csdn.net/zhaokaiqiang1992
關於ActionBar的使用,很多大神早就已經寫了非常好的文章進行了介紹,所以ActionBar的基本使用本文再贅述,今天我們主要討論一下ActionBar在使用中的一些細節問題。
1.使用ActionBar的手機版本限制是什嗎?
系統原生的ActionBar是在Android3.0(API 11)才引入的,主要用來提供一個統一風格的導覽列,來代替Activity的標題列。對於手機來說,版本只存在2.x時代和4.x時代,這是因為3.x系統是為了平板而產生的,在手機上並不存在3.x版本的系統。所以,如果使用系統原生的ActionBar,那麼軟體的最低版本支援應該是4.0(API 14)。如果我們想最低支援2.2系統,那麼原生的ActionBar就不能使用了,不過,我們可以使用第三方開源項目ActionBarSherlock,實現2.x版本的相容。這個項目的使用暫時先不介紹了,資料很多,下面是項目的Github地址:https://github.com/JakeWharton/ActionBarSherlock
2.預設的ActionBar上面有哪些內容?
當我們建立一個預設的4.0以上版本的APP的時候,會內建一個預設效果的ActionBar,ActionBar從功能上大體可以分為以下幾個部分
3.Home地區顯示的是什麼內容呢?
Home的位置預設是用來放置APP的icon的,但是這個位置,也可以用來放一個logo的圖片。icon與logo的區別在於,icon指的是APP在手機案頭的表徵圖,而logo則沒有限制,任何圖片都可以,但是為了增強使用者對品牌的認知度,logo一般使用品牌的圖片。需要注意的是,icon和logo是不能同時存在的,如果有logo,icon會被覆蓋。
4.如何指定顯示icon還是logo?
我們可以使用下面的方式,來制定某一個Activity的icon和logo屬性
<activity android:name=".MainActivity" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:logo="@drawable/qr" > </activity>
設定好這些屬性之後,如果不做其他的額外設定,APP預設會顯示logo的圖片,如所示
如果我們想顯示icon怎麼辦呢?
使用下面的代碼即可
actionBar = getActionBar();
actionBar.setDisplayUseLogoEnabled(false);
效果如下
如果這兩個表徵圖我們都不想要呢?通過下面的代碼,就可以把Home的表徵圖都去掉了。
actionBar.setDisplayShowHomeEnabled(false);
5.如何指定顯示的標題文字?
標題文字地區用來指示當前的介面,分為主標題和副標題,我們可以通過下面的方式來設定顯示的標題
<activity android:name=".MainActivity" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:logo="@drawable/qr" > </activity>
當然,我們也可以在代碼中控制顯示的標題和副標題,就像下面這樣:
actionBar.setTitle("我是主標題");actionBar.setSubtitle("我是副標題");
下面是實現的效果
我們也可以通過下面的程式碼後置標題
actionBar.setDisplayShowTitleEnabled(false);
6.如果在Home地區,加上向上的互動中心圖示?
如果Home地區的點擊效果是回到上一級,那麼僅僅使用icon就不太合適了,我們可以通過下面的代碼,將Home地區加上向上的互動中心圖示,從而使得導航更加的明確
actionBar.setDisplayHomeAsUpEnabled(true);
如下:
加上向上的互動中心圖示之後,我們就可以接受到這個小表徵圖的點擊事件,點擊事件就在onOptionsItemSelected裡面接受,代碼如下
@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}if (id == android.R.id.home) {Toast.makeText(this, "點擊", Toast.LENGTH_SHORT).show();return true;}return super.onOptionsItemSelected(item);}
因為這個位置是系統設定的,因此id就是固定的android.R.id.home,我們在onOptionsItemSelected裡面就可以接收到點擊事件,然後進行對應的邏輯處理。
另外的一個思路是使用前面介紹的logo,把logo設定成返回的表徵圖,也可以實作類別似的效果。
7.如何給ActionBara設定自訂的背景或者是顏色
ActionBar內建的顏色只有黑色和白色,如果我們想改變ActionBar的顏色,我們可以使用圖片或者是純顏色值。
如果使用自訂圖片,我們可以向下面這樣做
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
actionBar.setBackgroundDrawable(d);
效果如下
如果使用自訂的顏色,我們可以象下面這樣
actionBar.setBackgroundDrawable(new ColorDrawable(Color.BLUE));
效果如下所示
【Android介面實現】ActionBar使用的若干細節整理