ActionBar是一个显示在屏幕顶部的控件,它包括了在左边显示的应用的logo图标和右边操作菜单的可见项。
实现方法
在ActionBar上的图标叫做ActionButtons,可以把不重要的ActionButtons放在ActionOverflows。
在Activity中:
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);MenuItem shareItem = menu.findItem(R.id.action_share);return true;}
自定义ActionBar background:
theme.xml:
设置ActionBar为Tab样式:
ActionBar actionBar = getActionBar(); //for <3.0 getSupportActionBar();actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);for (int i = 0; i < 3; i++){Tab tab = actionBar.newTab();tab.setText("Tab" + i);tab.setTabListener(null);actionBar.addTab(tab);}
实现Tablistener回调方法:
ActionBar.TabListener tabListener = new ActionBar.TabListener() {@Overridepublic void onTabSelected(Tab tab, FragmentTransaction ft) {Toast.makeText(MainActivity.this, "TabSelected" + tab.getPosition(), Toast.LENGTH_SHORT).show();}@Overridepublic void onTabUnselected(Tab tab, FragmentTransaction ft) {}@Overridepublic void onTabReselected(Tab tab, FragmentTransaction ft) {}};
启用Overlay模式:
ActionBar占用一定屏幕空间,可以使之自动隐藏,但是每次自动隐藏又会导致重新计算屏幕,可以设置其为Overlay模式以把ActionBar放在屏幕的上面而不是顶部。
首先需要创建自定义theme,并设置android.windowActionBarOverlay属性为true。
- true
如果要预留一定空间,可以指定PaddingTop:
android:paddingTop="?android:attr/actionBarSize"
添加ActionProvider:
menu.xml:
在Activity代码中:(当前系统中能够发送图片的所有应用)
@Override
public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);MenuItem shareItem = menu.findItem(R.id.action_share);mShareActionProvider = (ShareActionProvider) shareItem.getActionProvider();mShareActionProvider.setShareIntent(getDefaultIntent());return true;
}private Intent getDefaultIntent() {Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("image/*");return intent;
您可能感兴趣的学习文章
Android进阶学习笔记:docs.qq.com/doc/DWHFqVHBMVEJPWUx
Android工程师面试题钢:docs.qq.com/doc/DWGZIRFh5VEtYWE1D
Android音视频入门到高阶学习笔记:docs.qq.com/doc/DWFFWZHNPTHZVdHFX
Android开源框架设计思想解读:docs.qq.com/doc/DWHlGYUdseVhsSUda
App性能优化详解:docs.qq.com/doc/DWGRIR1hVWkFoZWVK
Framework内核解析和源码讲解:docs.qq.com/doc/DWFdlc2JocEtNbEJ1