2015年3月24日 星期二

Android ActionBar Title

display title

Activity 的 ActionBar 預設會顯示標題,位置在 icon 右邊,標題預設值為 activity android:label,找不到就會改為 application android:label,都沒有就顯示 class name 囉,反正就跟桌面上顯示的 title 一致。

  1. activity android:label
  2. application android:label

show/hide title

setDisplayShowTitleEnabled(true) 用來顯示 title 相當於使用 setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE),setDisplayShowTitleEnabled(false) 用來隱藏 title 相當於使用 setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE)。

change title

當 setDisplayShowTitleEnabled(true) 時,使用 setTitle() 來做動態變更標題,setTitle(null) 則不顯示 title。

Subtitle

Subtitle 的顯示位置在 Title 的下方,預設是不會顯示 subtitle,必須使用 setSubtitle() 來設定才會顯示。

2015年3月17日 星期二

Android ActionBar Icon Logo Title

display icon/logo

Activity 的 ActionBar 預設會顯示圖示,而 icon 及 logo 都顯示在同一個位置(原文 home section),圖示設定按照下列順序擇一顯示,也就是第一個圖片存在則顯示第一個,前面三個都不存在則顯示最後一個 application icon。

  1. activity android:logo
  2. application android:logo
  3. activity android:icon
  4. application android:icon

display logo rather than icon

ActionBar home section 顯示 logo/icon,當 logo 存在則顯示 logo 否則顯示 icon,這個原則可透過 setDisplayUseLogoEnabled() 函數來設定。setDisplayUseLogoEnabled(true) 會優先選擇 logo 顯示,setDisplayUseLogoEnabled(false) 則只顯示 icon 圖示。setDisplayUseLogoEnabled(true) 相當於 setDisplayOptions(ActionBar.DISPLAY_USE_LOGO, ActionBar.DISPLAY_USE_LOGO),setDisplayUseLogoEnabled(false) 相當於 setDisplayOptions(0, ActionBar.DISPLAY_USE_LOGO)。

change icon

當 setDisplayUseLogoEnabled(true) 時,需使用 setLogo() 來做動態變更,setDisplayUseLogoEnabled(false) 則使用 setIcon()。

show/hide icon

setDisplayShowHomeEnabled(true) 用來顯示 icon 相當於使用 setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME, ActionBar.DISPLAY_SHOW_HOME),setDisplayShowHomeEnabled(false) 用來隱藏 icon 相當於使用 setDisplayOptions(0, ActionBar.DISPLAY_SHOW_HOME)。

2015年3月16日 星期一

Android Styles and Themes

官方文章:Styles and Themes 最後一段有提到Android 提供內建大量 Styles and Themes 可以使用,所有資料列表都放在 R.style,在 xml 檔案內使用只要把底線換成句點即可,比如 android.R.style.Theme_Holo_Light 換成 "@android:style/Theme.Holo.Light" 即可。

  • Android Themes List: 以 Theme_ 開頭的常數.
  • Android Styles: styles.xml.
  • Android Themes: themes.xml.
  • Android Styles 官方語法指南: link
  • Android Styles and Themes 官方教學指南: link
  • 變更 Android Theme 可以修改 AndroidManifest.xml 中的 <application android:theme="@style/android:Theme.Holo">

2015年3月9日 星期一

Android ActionBar

getActionBar V.S. getSupportActionBar

  • getSupportActionBar() -- android.support.v7.app.ActionBarActivity

    return android.support.v7.app.ActionBar

  • getActionBar() -- android.app.Activity

    return android.app.ActionBar

從上述二個函數的描述可以看出來,如果你繼承 ActionBarActivity,要取得 ActionBar,就要使用 getSupportActionBar(),如果繼承 Activity,就要使用 getActionBar()。

一開始參考別人的範例都是使用 getActionBar(),但是都一直出現 NullPointerException 的錯誤。最後才發現別人都是使用 Activity,而我使用 Android Studio 創建的新專案預設都是使用 ActionBarActivity,難怪一開始就出師不利。

Android Context