Android 程式開發:(八)使用活動欄 —— 8.3 自定義ActionBar

在上一節中,菜單選項是沒有文字的。如果想要同時顯示圖標和文字,可以一起使用“|”和MenuItem.SHOW_AS_ACTION_WITH_TEXT常量。

[java] 
MenuItem mnu1 = menu.add(0, 0, 0, "Item 1"); 
{          
    mnu1.setIcon(R.drawable.ic_launcher); 
    mnu1.setShowAsAction( 
        MenuItem.SHOW_AS_ACTION_IF_ROOM | 
        MenuItem.SHOW_AS_ACTION_WITH_TEXT);             


除瞭可以點擊Action項目,也可以點擊ActionBar上面的應用圖標。當應用圖標被點擊的時候,會調用onOptionsItemSelected()方法。如果想識別應用圖標被點擊瞭,可以使用adnroid.R.id.home常量。

[java] 
private boolean MenuChoice(MenuItem item) 
    {         
        switch (item.getItemId()) { 
        case  android.R.id.home: 
            Toast.makeText(this,  
                "You clicked on the Application icon",  
                Toast.LENGTH_LONG).show(); 
            return true; 
        case 0: 
            Toast.makeText(this, "You clicked on Item 1",  
                Toast.LENGTH_LONG).show(); 
            return true; 
        case 1: 
           …… 
    }     
如果想讓應用圖標能被點擊,我們需要調用setDisplayHomeAsUpEnable()方法:
[java]
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
     
    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    //actionBar.hide(); 
    //actionBar.show(); //—show it again— 

當點擊應用圖標:

 

一般情況下,一個應用可能包含很多activity,那麼應用的圖標通常被用來返回主Activity。如果想這麼做,就需要一個Intent對象,並使用Intent.FLAG_ACTIVITY_CLEAR_TOP標志。

[java]
case  android.R.id.home: 
    Toast.makeText(this,  
        "You clicked on the Application icon",  
        Toast.LENGTH_LONG).show(); 
 
    Intent i = new Intent(this, MyActionBarActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
 
    return true; 
使用Intent.FLAG_ACTIVITY_CLEAR_TOP標識,可以確保當點擊應用圖標的時候,在“返回棧”裡面的那些activity都會被清除掉。使用這種方法,如果用戶點擊返回鍵,其他的activity將不會再顯示出來。

發佈留言