亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android Developers Training】 7. 添加Actio

系統(tǒng) 1821 0

注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術(shù)一般,由于喜愛安卓而產(chǎn)生了翻譯的念頭,純屬個人興趣愛好。

原文鏈接: http://developer.android.com/training/basics/actionbar/adding-buttons.html


Action Bar 允許你為和應(yīng)用當(dāng)前Context相關(guān)的最重要的action事件添加按鈕。那些在 Action Bar 中直接顯示出來的圖標(biāo)或文字就是所謂的 Action Buttons 。在Action Bar中無法完整顯示的或者不是足夠重要的操作按鈕,都被隱藏在了更多操作這一按鈕中,如下圖所示:

?圖1. 具有一個“搜索”的操作按鈕和一個“更多操作”(action overflow)按鈕(其中包含了更多的操作)的Action Bar

?

一). 在XML中列舉出操作

所有的操作按鈕還有其他在更多操按鈕中的所有項(xiàng)目,都在一個菜單資源( menu resource )的XML文件中定義。為了把操作添加到Action Bar中,在項(xiàng)目的“ res/menu/ ”目錄下創(chuàng)建一個新的XML文件。

為每一個你希望添加到Action Bar中的項(xiàng)目添加一個 <item> 標(biāo)簽。例如:

      
        <
      
      
        menu 
      
      
        xmlns:android
      
      
        ="http://schemas.android.com/apk/res/android"
      
      
        >
      
      
        <!--
      
      
         Search, should appear as action button 
      
      
        -->
      
      
        <
      
      
        item 
      
      
        android:id
      
      
        ="@+id/action_search"
      
      
        

          android:icon
      
      
        ="@drawable/ic_action_search"
      
      
        

          android:title
      
      
        ="@string/action_search"
      
      
        

          android:showAsAction
      
      
        ="ifRoom"
      
      
        />
      
      
        <!--
      
      
         Settings, should always be in the overflow 
      
      
        -->
      
      
        <
      
      
        item 
      
      
        android:id
      
      
        ="@+id/action_settings"
      
      
        

          android:title
      
      
        ="@string/action_settings"
      
      
        

          android:showAsAction
      
      
        ="never"
      
      
        />
      
      
        </
      
      
        menu
      
      
        >
      
    

上述用于聲明的代碼表明:如果Action Bar的空間充足,那么搜索的操作按鈕將會顯示,但是設(shè)置這一操作的按鈕將永遠(yuǎn)在“更多操作”當(dāng)中。(所有的操作都會默認(rèn)的在“更多操作”中顯示,但顯示地為每個操作聲明設(shè)計(jì)的意圖是一個好的習(xí)慣)。

下載Action Bar圖標(biāo):

為了和Android圖標(biāo)風(fēng)格( iconography )達(dá)到完美的視覺效果,建議你使用 Action Bar Icon Pack 提供的圖標(biāo)。

這個“ icon ”屬性字段需要一個圖像的資源ID。在“ @drawable/ ”之后跟隨著的名字必須是一個你在項(xiàng)目工程的“ res/drawable/ ”存儲好的一幅位圖文件。例如:“ @drawable/ic_action_search ”代表了“ ic_action_search.png ”。類似的,“ title ”屬性字段使用的是在項(xiàng)目工程中“ res/values/ ”目錄下通過XML文件定義好的字符資源,這些都在 Building a Simple User Interface 有討論過。(對應(yīng)博客鏈接: http://www.cnblogs.com/jdneo/p/3439108.html

Note:

當(dāng)為你的應(yīng)用創(chuàng)建圖標(biāo)和其他位圖時,一個很重要的事情是你最好為各種分辨率屏幕的設(shè)備準(zhǔn)備多個版本。這些在課程: Supporting Different Screens 有更多的討論。

如果你的應(yīng)用使用了Support Library 來兼容低至Android 2.1版本的系統(tǒng),“ showAsAction ”這一屬性字段并不屬于“ android: ”命名空間。不過這個屬性字段由 Support Library 來提供,所以你必須定義你自己的XML命名空間,然后使用這個命名空間作為字段的前綴。(一個自定義的XML命名空間最好以你的應(yīng)用名為基礎(chǔ),當(dāng)然它可以是你希望的任何名字,并且它的作用域只在你聲明它的文件這一范圍內(nèi))例如:

      
        <
      
      
        menu 
      
      
        xmlns:android
      
      
        ="http://schemas.android.com/apk/res/android"
      
      
        

      xmlns:yourapp
      
      
        ="http://schemas.android.com/apk/res-auto"
      
      
        >
      
      
        <!--
      
      
         Search, should appear as action button 
      
      
        -->
      
      
        <
      
      
        item 
      
      
        android:id
      
      
        ="@+id/action_search"
      
      
        

          android:icon
      
      
        ="@drawable/ic_action_search"
      
      
        

          android:title
      
      
        ="@string/action_search"
      
      
        

          yourapp:showAsAction
      
      
        ="ifRoom"
      
      
        />
      
      
        

    ...


      
      
        </
      
      
        menu
      
      
        >
      
    

?

二). 為Action Bar添加操作

為了將這個菜單項(xiàng)添加進(jìn)Action Bar,我們需要在你的activity中實(shí)現(xiàn) onCreateOptionsMenu() 這一回調(diào)函數(shù),以此來將菜單資源填充進(jìn)菜單( Menu )對象中,例如:

      
        @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);

}
      
    

?

三). 操作按鈕的響應(yīng)

當(dāng)用戶按下了其中一個操作按鈕,或者“更多操作”中的操作按鈕,系統(tǒng)會調(diào)用你的activity中的回調(diào)函數(shù) onOptionsItemSelected() ,在你這個方法的實(shí)現(xiàn)中,對參數(shù) MenuItem 調(diào)用 getItemId() 方法來確定是哪個按鈕被按下了。返回的資源ID(ResId)是和你在 <item> 標(biāo)簽中“ android:id ”這一屬性字段所聲明的ID是對應(yīng)的。

      
        @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添加返回操作

圖2. Gmail的返回按鈕

所有你的應(yīng)用中非主入口的畫面(即指的是除了你的應(yīng)用的“home”畫面外的所有其他畫面)必須為用戶提供一個導(dǎo)航至應(yīng)用邏輯層次結(jié)構(gòu)中的父畫面,這可以通過讓用戶按下“Action Bar”中的“返回(Up)”按鈕來實(shí)現(xiàn)。

當(dāng)在Android 4.1(API Level 16)或更高的系統(tǒng)版本中運(yùn)行時,或者使用 Support Library 提供的 ActionBarActivity 時,實(shí)現(xiàn)返回的導(dǎo)航功能,只需要你在清單文件中聲明父Activity,并且激活action bar的返回按鈕。

例如,你可以在清單文件中這樣寫:

      
        <
      
      
        application 
      
      
        ... 
      
      
        >
      
      
        

    ...

    
      
      
        <!--
      
      
         The main/home activity (it has no parent activity) 
      
      
        -->
      
      
        <
      
      
        activity

        
      
      
        android:name
      
      
        ="com.example.myfirstapp.MainActivity"
      
      
         ...
      
      
        >
      
      
        

        ...

    
      
      
        </
      
      
        activity
      
      
        >
      
      
        <!--
      
      
         A child of the main activity 
      
      
        -->
      
      
        <
      
      
        activity

        
      
      
        android:name
      
      
        ="com.example.myfirstapp.DisplayMessageActivity"
      
      
        

        android:label
      
      
        ="@string/title_activity_display_message"
      
      
        

        android:parentActivityName
      
      
        ="com.example.myfirstapp.MainActivity"
      
      
        >
      
      
        <!--
      
      
         Parent activity meta-data to support 4.0 and lower 
      
      
        -->
      
      
        <
      
      
        meta-data

            
      
      
        android:name
      
      
        ="android.support.PARENT_ACTIVITY"
      
      
        

            android:value
      
      
        ="com.example.myfirstapp.MainActivity"
      
      
        />
      
      
        </
      
      
        activity
      
      
        >
      
      
        </
      
      
        application
      
      
        >
      
    

之后通過調(diào)用 setDisplayHomeAsUpEnabled() 來激活返回按鈕:

      
        @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);
      
      

}
    

因?yàn)楝F(xiàn)在系統(tǒng)知道“ MainActivity ”是“ DisplayMessageActivity ”的父Activity,當(dāng)用戶按下返回按鈕,系統(tǒng)將會自動地導(dǎo)航至父Activity,你不需要去對返回按鈕做任何事件處理。

閱讀 Providing Up Navigation ,獲取更多信息。

?

?

【Android Developers Training】 7. 添加Action Buttons


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久久国产这里有的是精品 | 国产成人精品一区二三区 | 嫩草社区| 亚洲久久在线观看 | 国产精品国产三级国产普通话 | 久久精品国产精品国产精品污 | 99精品网站| 久久精品国产74国产 | 97在线免费视频观看 | 99久久国产综合精品五月天 | 天天草夜夜操 | 一亚洲精品一区 | 久久国产精品2020盗摄 | 天天操天天操天天操天天操 | 色视频在线播放 | 日本免费的一级绿象 | 狠狠2020 | 爱爱永久免费视频网站 | jzz欧美| 久久精品国产大片免费观看 | 色综合久久综合欧美综合图片 | 中文字幕在线免费播放 | 夜夜狠狠狠狠 | 欧美精品福利在线视频 | 欧美日韩色综合网站 | 狠狠色丁香婷婷综合久久片 | 男女车车好快的车车免费网站 | 一级国产视频 | 日本高清精品 | 波多野结衣一区二区 三区 波多野结衣一区二区三区 波多野结衣一区二区三区高清在线 | 国产亚洲综合色就色 | 亚洲高清在线观看 | 国产1769一七六九视频在线 | 日本一区二区三区高清福利视频 | 久久久精品免费热线观看 | 伦理不卡 | 久久99久久99精品免观看动漫 | a国产精品 | 亚洲欧美日韩精品香蕉 | 国产精品视频公开费视频 | aaa一区二区三区 |