告別ActionBarSherlock——Android.support包也能打造相容2.x的ActionBar(1)

來源:互聯網
上載者:User

標籤:android   style   http   io   os   ar   使用   java   strong   

http://www.bdqn.cn/news/201308/10625.shtml

 

摘要: 告別ActionBarSherlock——android.support包也能打造相容2.x的ActionBar(1)

 

ActionBar是Android 3.0的產物 一直延伸到現在最新的4.3

就個人而言 ActionBar相比傳統的彈出式菜單 更加簡潔

但是ActionBar只有API 10以上(包括API 10)才能嘗到

於是有些大神便打造出了ActionBarSherlock,為2.x帶來了一個相容的ActionBar庫

在今年的Google I/O,Google終於打算把官方的相容2.x的ActionBar庫放出來給大家使用。

現在我也分享一下使用的方法。

大家可以通過SDK Manager更新Android Support Library到ver18來獲得這個庫

更新後可以在 <sdk目錄>/extras/android/support/v7 找到appcompat檔案夾 這個裡面就是相容2.x的ActionBar的庫

或者手動下載:http://pan.baidu.com/share/link?shareid=3793697689&uk=1527727709

匯入庫後

需要在styles.xml更改主題為(一定要記得改 否則啟動時會FC)

[html]

1

2

<!-- 這個是黑色主題 --> 

<style name="AppBaseTheme" parent="Theme.AppCompat">

[html]

1

2

<!-- 這個是白色主題 --> 

<style name="AppBaseTheme" parent="Theme.AppCompat.Light">

[html]

1

2

<!-- 這個是白色主題帶黑色ActionBar --> 

<style name="AppBaseTheme"parent="Theme.AppCompat.Light.DarkActionBar">

下面是程式碼範例(注意是public class XXXActivity extends ActionBarActivity,而不是extends Activity):

[java]

package com.example.testabc; 

    

import android.os.Bundle; 

import android.support.v4.view.MenuItemCompat; 

import android.support.v7.app.ActionBarActivity; 

import android.view.Menu; 

import android.view.MenuItem; 

import android.widget.Toast; 

     

public class MainActivity extends ActionBarActivity { 

     

    @Override

    protected void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.activity_main); 

    } 

     

    @Override

    public boolean onCreateOptionsMenu(Menu menu) { 

        MenuItemCompat.setShowAsAction( 

                menu 

                .add("No.1") 

                .setIcon(android.R.drawable.ic_menu_rotate),  

                MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

        MenuItemCompat.setShowAsAction( 

                menu 

                .add("No.2") 

                .setIcon(android.R.drawable.ic_menu_compass),  

                MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

        MenuItemCompat.setShowAsAction( 

                menu 

                .add("No.3") 

                .setIcon(android.R.drawable.ic_menu_more),  

                MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

        return true; 

    } 

     

    @Override

    public boolean onOptionsItemSelected(MenuItem menu) { 

        if (menu.getTitle() == "No.1"){ 

            Toast.makeText(getApplicationContext(), "You clicked first button.", Toast.LENGTH_SHORT).show(); 

        } 

        if (menu.getTitle() == "No.2"){ 

            Toast.makeText(getApplicationContext(), "You clicked second button.", Toast.LENGTH_SHORT).show(); 

        } 

        if (menu.getTitle() == "No.3"){ 

            Toast.makeText(getApplicationContext(), "You clicked third button.", Toast.LENGTH_SHORT).show(); 

        } 

        return super.onOptionsItemSelected(menu); 

    } 

}

 

 

 

PS:有點納悶的就是 Theme.Compat.Light 白色主題 在2.x和4.x上的顯示效果不一樣,不過其他那兩個主題顯示是正常的。

可能還有朋友問我為什麼2.x上的顯示只有兩個按鈕,原因其實我螢幕太小了 第三個按鈕被分到 快顯功能表了,要按menu鍵才能找到。

告別ActionBarSherlock——Android.support包也能打造相容2.x的ActionBar(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.