今天又学习了github上的一个开源库,地址:https://github.com/JakeWharton/ActionBarSherlock
我把其中几个我认为比较常用的功能选取出来分享给大家
另外还截了图供大家比对了看,并没有什么难度
/**
* getActionBar改变Home部分,menu.add改变Menu Item
*/
// Menu对应导入的包com.actionbarsherlock.view.Menu
// MenuItem对应导入的包com.actionbarsherlock.view.MenuItem
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 设置背景图片,默认撑满整个ActionBar
getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_actionbar));
// 透明背景
getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ab_bg_black));
/**
* Home部分,用来显示Logo,主副标题
*/
// 默认存在home区域,如果不想要,设为false
getActionBar().setDisplayShowHomeEnabled(true);
// 默认存在Logo,且是app的icon,当然也可以自己设置。不想要Logo设为false
// 如果setDisplayShowHomeEnabled设为false则下面两行无效
getActionBar().setDisplayUseLogoEnabled(true);
getActionBar().setLogo(R.drawable.girl);
// 显示主副标题。默认为true
getActionBar().setDisplayShowTitleEnabled(true);
getActionBar().setTitle("主标题");
getActionBar().setSubtitle("副标题");
// setDisplayHomeAsUpEnabled(true)可以响应onOptionsItemSelected
// 响应Home区域的点击效果,id=android.R.id.home
getActionBar().setDisplayHomeAsUpEnabled(true);
/**
* menu.add改变Menu Item
*/
// 最常见的MenuItem。由于参数改变getMenuInflater无法使用
// getMenuInflater().inflate(R.menu.main, menu);
menu.add(0, Menu.FIRST, 0, "title")
.setActionView(R.layout.collapsible_edittext)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
// 自定义button视图
// item1的id=(Menu.FIRST+1),但button不是,所以无法响应onOptionsItemSelected
// 只能setOnClickListener
Button button = new Button(this);
button.setText("新增");
menu.add(0, Menu.FIRST + 1, 0, null).setActionView(button)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Button", Toast.LENGTH_SHORT)
.show();
}
});
// 自定义button视图。可以响应onOptionsItemSelected
// 但是非icon区域也会受点击响应的影响
// 点击后打开系统设置界面
menu.add(0, Menu.FIRST + 2, 0, null).setIcon(R.drawable.add2)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
// 显示进度条。oncreate函数里面要有requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
// 注意,是在setContentView前面加
setSupportProgressBarIndeterminateVisibility(true);
return true;
}
/**
* getActionBar改变Home部分,menu.add改变Menu Item
*/
// Menu对应导入的包com.actionbarsherlock.view.Menu
// MenuItem对应导入的包com.actionbarsherlock.view.MenuItem
@Override
public boolean onCreateOptionsMenu(Menu menu) {
......
// setCustomView是定制视图.它和setActionView区别在于:
// ActionView可以通过setShowAsAction来改变自己的位置
// setCustomView不能,只能通过setDisplayShowCustomEnabled来隐藏
getActionBar().setDisplayShowCustomEnabled(true);
final View customNav = LayoutInflater.from(this).inflate(
R.layout.custom_view, null);
getActionBar().setCustomView(customNav);
((RadioGroup) customNav.findViewById(R.id.radio_nav))
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton button = (RadioButton) customNav
.findViewById(checkedId);
Toast.makeText(
MainActivity.this,
"Navigation selection changed to "
+ button.getText().toString(),
Toast.LENGTH_SHORT).show();
}
});
// setNavigationMode
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);
adapter.add("hello2");
adapter.add("hello1");
adapter.add("hello3");
getActionBar().setListNavigationCallbacks(adapter,
new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition,
long itemId) {
Toast.makeText(MainActivity.this,
adapter.getItem(itemPosition),
Toast.LENGTH_SHORT).show();
return true;
}
});
return true;
}
/**
* getActionBar改变Home部分,menu.add改变Menu Item
*/
// Menu对应导入的包com.actionbarsherlock.view.Menu
// MenuItem对应导入的包com.actionbarsherlock.view.MenuItem
@Override
public boolean onCreateOptionsMenu(Menu menu) {
...
// Tab。注意导的包要一致
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (int i = 1; i <= 3; i++) {
ActionBar.Tab tab = getSupportActionBar().newTab();
tab.setText("Tab " + i);
tab.setTabListener(this);
getSupportActionBar().addTab(tab);
}
return true;
}
我把我的代码放到了这里,可以参考:http://download.csdn.net/detail/lxj1137800599/9548296