編輯:關於android開發
示例演示和基本介紹
啟用Action Bar
在Action Bar上添加按鈕
自定義Action Bar樣式
自動隱藏Action Bar
Action Provider的使用
ActionBarSherlock的使用
如果使用ActionBar則分為兩種情況
1、Action Bar on devices BEFORE Android 3.0(API 11)
1)、ActionBarSherlock開源庫
2)、ActionBarCompat library from the Android support library v7
2、Action Bar on devices AFTER Android 3.0(API 11)
在android3.0之前要使用Action Bar有如上兩種方式,第一種使用ActionBarSherlock開源庫(是android兼容開發包的一個擴展)當使用該開源庫是如果應用程序運行在Android3.0以上的設備則默認使用原生的Action Bar否則使用該開源庫提供的Action Bar。第二種方式就是使用google官方提供的support v7這個開源庫。
在android3.0之後的設備上可以使用原生的Action Bar
1、Action Bar on devices AFTER Android 3.0(API 11)
從Android 3.0開始Action bar被包含在了所使用所使用了Theme.Holo這個主題的Activity中(或Theme.Holo的子類)Theme.Holo是默認的主題,當minSdkVersion和targetSdkVersion都在11或以上時。
2、Action Bar on devices BEFORE Android 3.0(API 11)
必須是2.1以上的設備,需要在應用中包含Support Library(android-support-v7-appcompat)操作步驟:
1)、將該android-sdk-windows\extras\android\support\v7\appcompat庫導入並拷貝到工作空間中最後引入到你的項目中
2)、將activity繼承自ActivityBarActivity
3)、將AndroidManifest.xml文件中的主題更改為
android:theme=”@style/Theme.AppCompat.Light.DarkActionBar”
1、For Android 3.0 and higher only
添加按鈕也分為兩個部分,第一個部分在xml指定這些按鈕(在menu中加入不同的item項)
屬性介紹
1)、android:showAsAction=“always“
一直顯示在Action Bar上
2)、android:showAsAction=“ifRoom“
如果Action Bar空間足夠,則顯示
3)、android:showAsAction=“never“
不顯示在Action Bar中,折疊在OverFlow裡
4)、android:showAsAction=“withText“
菜單項和它的圖標,菜單文本一起顯示
2、For Android 2.1 and higher
1)、在menu.xml中加入自定義命名空間
xmlns:yourapp=”http://schemas.android.com/apk/res-auto”
2)、在showAsAction屬性前指定命名空間
yourapp:showAsAction="ifRoom"
Action Bar上的按鈕添加點擊事件
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
// 給按鈕添加點擊事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search:
Toast.makeText(this, "Action_Search", 0).show();
break;
case R.id.action_settings:
Toast.makeText(this, "Action_Settings", 0).show();
break;
}
return super.onOptionsItemSelected(item);
}
給ActionBar左上角圖標添加向上或返回按鈕(查看google的官方文檔)具體添加什麼樣的按鈕根據需要設定。
//啟用左上角的向上按鈕
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//getActionBar().setDisplayHomeAsUpEnabled(true);//3.0以上
注:parentActivityName屬性為3.0以上使用,3.0以下要用“meta-data”
使用android提供好的主題
Theme.Holo for “dark” theme Theme.Holo.Light for a “light” themeFor example
以上是在3.0以上使用Android自帶的主題,如果是android 2.1以上的設備使用如下方式:
For example
Customize the Background(自定義Action Bar的背景顏色)
For Android 3.0 and higher only
1、在themes.xml中新建自定義Style,使其繼承已有的Action Bar Style(如:Theme.Holo)
2、覆寫其actionBarStyle屬性
3、actionBarStyle屬性值指向另一個已被覆寫了background屬性的Style
4、指定該background的屬性值
themes.xml
在AndroidManifest.xml中引用自定義主題
android:theme="@style/CustomActionBarTheme"
For Android 2.1 and higher
themes.xml
最後同樣在清單文件中引入自定義主題
Customize the Color 參考官方文檔
Customize the Tab Indicator
ActionBar actionBar = getActionBar(); // for < 3.0 getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//設置導航方式,ActionBar.NAVIGATION_MODE_LIST
ActionBar.TabListener tabLiatener = new ActionBar.TabListener() {
@Override
// 未選中時
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
// 選中時
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,
"TabSelected" + tab.getPosition(), 0).show();
}
@Override
// 重復選中時
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
};
//添加三個標簽
for (int i = 0; i < 3; i++) {
Tab tab = actionBar.newTab();
tab.setText("Tab" + i);
tab.setTabListener(tabLiatener);
actionBar.addTab(tab);//添加到actionbar中
}
自定義Tab標簽的樣式(參照官方文檔)另外還有一種方法可以一鍵生成Action Bar Tab的樣式,設置好後直接下載並解壓將res目錄中的文件全部拷貝到項目中,最後在清單文件中使用一鍵工程生成的樣式。(可以到谷歌的官方文檔學習更多自定義樣式的使用)
默認情況下,Action Bar出現在當前的activity的頂部,減少了Activity布局當中剩下的可以用的空間,在這種情況下可以調用hide() and show()方法來使Action Bar隱藏或顯示,但是通過這種方式的話會使你的Activity根據新的大小從新計算並且重新繪制這個layout,為了避免重繪現象你可以開啟action bar 的overlay mode模式,當處於overlay模式下activity可以使用剩下可利用的空間並且見這個Action bar繪制到當前layout的前面而不是上面提到的頂部,利用該方式當action bar隱藏或顯示就不會從前計算layout的大小
Enable Overlay Mode(開啟overlay模式)
需要創建自定義主題,這個主題要擴展一個已經存在的Action bar主題並且設置android:windowActionBarOverly屬性為true,(這裡同樣分為兩部分3.0以上的設備和2.1以上設備)
1、For Android 3.0 and higher only
2、For Android 2.1 and higher
為什麼要知道marginTop,當Action Bar處於overlay模式
時他占據了一些可見的布局,為了確保這些布局保留在Action bar的下部就可以為其加入marginTop或paddingTop屬性並且屬性的值指定為 actionBarSize
For example
1、For Android 3.0 and higher only
...
2、For Android 2.1 and higher
...
知識點(XML)
1、For Android 3.0 and higher only<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
2、For Android 2.1 and highers
3.0 For example
知識點(JAVA)
1、For Android 3.0 and higher only
shareItem = menu.findItem(R.id.action_share);
shareItem.getActionProvider();
2、For Android 2.1 and higher
shareItem = menu.findItem(R.id.action_share);
MenuItemCompat.getActionProvider(shareItem);
ActionBarSherlock 是兼容開發包的一個擴展
開源庫地址
https://github.com/JakeWharton/ActionBarSherlock
官網地址
http://actionbarsherlock.com/
把他下載下來,把actionabarabsherlock拷貝到工作空間中並引入到項目中
導入之後可能會出現的問題:
android-support-v4.jar包版本不一致導致出錯等…
知識點
1、 android:Theme.Holo —-> Theme.Sherlock
android:Theme.Holo.Light —–> Theme.Sherlock.Light
android:Theme.Holo.Light.DarkActionBar —-> Theme.Sherlock.Light.DarkActionBar
…….
2、 Activity —-> SherlockActivity
ListActivity —-> SherlockListActivity
Fragment —-> SherlockFragment
…….
3、 getActivity() —-> getSherlockActivity()
getActionBar() —-> getSupportActionBar();
…….
示例代碼
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.OnNavigationListener;
import com.actionbarsherlock.app.SherlockActivity;
public class MainActivity extends SherlockActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actinBar = getSupportActionBar();
actinBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);//設置為列表項的導航模式
//為列表項添加內容
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1);
for(int i=0;i<5;i++){
adapter.add("列表項"+i);
}
actinBar.setListNavigationCallbacks(adapter, new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
Toast.makeText(MainActivity.this, "select"+itemPosition, 0).show();
return false;
}
});
}
}
android:theme="@style/Theme.Sherlock.Light.DarkActionBar"
關於ActionBarSherlock的更多設置請查看官網
Activity是Android開發中四大組件之一,也是Android組件中最
Android開發: fragment解析及案例 Fragment 設計理念 在設計應用時特別是Android 應用 ,有眾多的分辨率要去適應,而fragme
Android Eclipse 導入 AS Gradle AAR 庫手冊 序言 這是一篇半技術類文章。眾所周知現在Google主推Android Studio開發工具,而
Android學習筆記(23):24.列表項的容器—AdapterView的子類們 AdapterView的子類的子類ListView、GridView、Spinner、