ActionBar是Android常用的导航控件,位于activity的顶部,用于显示标题,导航icon和actions等等,下面总结一下ActionBar的常用方法:
1、基本属性
设定APP的主题Theme.AppCompat.Light.DarkActionBar,其中colorPrimary就是actionBar的背景颜色,setTitle设置actionbar的标题内容
2、显示与隐藏
actionBar的显示和隐藏主要是通过调用getSupportActionBar().hide()和show()来实现
需要全屏显示activity则需要隐藏actionbar和状态栏
// 隐藏状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
3、显示导航图标
进入二级界面,actionbar则需要显示返回上一个界面的退出图标,通过调用getSupportActionBar().setDisplayHomeAsUpEnabled(true)来实现,图标ID为android.R.id.home,那么点击事件的响应
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home://点击actionBar返回键
onBackPressed();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
4、自定义actionbar
如果需要实现自定义actionbar,则通过getSupportActionBar().setCustomView()来实现
5、叠加模式
如果需要actionbar叠加显示在activity上,则需要在主题中加入<item name="android:windowActionBarOverlay">true</item>
6、getSupportActionBar()和getActionBar()的区别
如果当前activity是继承自AppCompatActivity,则需要通过getSupportActionBar()来获取actionbar
如果是继承自Activity,则可以调用getActionBar()来获取
7、创建actions
在res/menu中创建menu的item的描述属性:
<item
android:id="@+id/action_refresh"
android:orderInCategory="100"
android:showAsAction="always"
android:icon="@drawable/ic_action_refresh"
android:title="Refresh"/>
<item
android:id="@+id/action_settings"
android:title="Settings">
</item>
showAsAction属性用来定义每个Action是如何显示的,always表示永远显示在ActionBar中,如果屏幕空间不够则无法显示,ifRoom表示屏幕空间够的情况下显示在ActionBar中,不够的话就显示在overflow中,never则表示永远显示在overflow中。
在activity中使用这个menu:
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
returntrue;
}
响应action的点击事件:
Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()) {
// action with ID action_refresh was selected
caseR.id.action_refresh:
Toast.makeText(this,"Refresh selected", Toast.LENGTH_SHORT)
.show();
break;
// action with ID action_settings was selected
caseR.id.action_settings:
Toast.makeText(this,"Settings selected", Toast.LENG
.show();
break;
default:
break;
}
return true;
}
网友评论