ActionBar(Undone)
来源:互联网 发布:linux unrar 编辑:程序博客网 时间:2024/05/20 14:19
ActionBar 替换3.0以前的tittle bar和menu。
目的是用来替换掉菜单按键功能,长按操作功能,提供一种全新的操作体验
ActionBar 低版本的支持
ActionBar 是在Android 3.0(API 11)中加入到SK中的,想在低版本中使用ActionBar有两种选择:使用http://actionbarsherlock.com 或使用Support Library v7。
1 导入Android Support V7 library2 将Activity 继承 ActionBarActivity3 给Activity 设置theme,主题需要是v7下的@style/Theme.AppComp.XXX or descendant with this Activity
ActionBar的组成
1 应用的图标标题部分:包含了 图标,主标题,副标题,回退部分
2 导航模式部分:这里显示的是导航模式中的List(导航模式有三种,标准,list,tab)
3 Action button 部分: 用来响应用户的点击事件
4 溢出菜单部分:如果Action button拜访不下去了,会在此处显示
ActionBar标题图标部分
用来显示标题和回退的
// 设置actionbar的标题部分 actionBar.setTitle("主标题"); actionBar.setSubtitle("副标题"); actionBar.setDisplayShowTitleEnabled(true);// 设置菜单 标题是否可见 默认可见. actionBar.setIcon(R.mipmap.ic_launcher); actionBar.setDisplayShowHomeEnabled(true);// 设置应用图标是否可见 默认不可见 // logo和icon的区别: AndroidManifest 里也有 // 默认 logo优先显示于icon actionBar.setLogo(R.mipmap.bg_photo); actionBar.setDisplayUseLogoEnabled(true);// 设置是否显示Logo优先,也可以理解为显示logo 默认不可见 actionBar.setDisplayHomeAsUpEnabled(true);// 设置back按钮是否可见
Action bar提供了用于Fragment间切换的内置三种导航标签
public abstract void setNavigationMode(@NavigationMode int mode);
* @param mode The new mode to set.
* @see #NAVIGATION_MODE_STANDARD 就是没有导航
* @see #NAVIGATION_MODE_LIST
* @see #NAVIGATION_MODE_TABS
List模式
//设置actionBar的导航模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
List<String> al = new ArrayList<String>();
al.add("第一个导航,一进入就选中");
al.add("第二个导航");
al.add("第二个导航");
ArrayAdapter MyAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, al);
//通过搜索adapter找到 /* public abstract void setListNavigationCallbacks(SpinnerAdapter adapter, OnNavigationListener callback);
@param SpinnerAdapter是BaseAdapter的父类, 对于纯String类, 我们直接使用ArrayAdapter @param OnNavigationListener 没有实现类, 需要自己实现*/ actionBar.setListNavigationCallbacks(MyAdapter, new ActionBar.OnNavigationListener() { @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { Toast.makeText(MainActivity.this, "itemPosition+" + itemPosition + ",itemId" + itemId, Toast.LENGTH_SHORT).show();
return false;//Returns True if the event was handled, false otherwise
} });
Tab模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab = null;
for (int i = 0; i < 3; i++) {
//1.创建tab
tab = actionBar.newTab();
tab.setText("tab" + i);
tab.setIcon(R.mipmap.bg_photo);
// 设置Tab的监听 Action Bar Tab must have a Callback 不写会报错
tab.setTabListener(new ActionBar.TabListener() {
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
Toast.makeText(getApplicationContext(), tab.getText() + "选中了", Toast.LENGTH_SHORT).show();//默认第一个tab选中
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
Toast.makeText(getApplicationContext(), tab.getText() + "取消选中了", Toast.LENGTH_SHORT).show();
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
Toast.makeText(getApplicationContext(), tab.getText() + "重新选中了", Toast.LENGTH_SHORT).show();
}
});
//将tab添加到actionBar中
actionBar.addTab(tab);
}
Action button的相关操作(Undone)
android 5.0 ToolBar
引用ActionBar常见问题
请问,当project的minSdkVersion 和 targetSdkVersion都为10的时候,这种针对2.3.3.的工程,是否可以引用android-support-v7-appcompat这个包来使用ActionBar呢?
回复summer_yang:可以使用
回复xyz_lmn:请问在2.3.3工程中引用了android-support-v7-appcompat后,工程会报出很多类似错误如下:
G:\workspace\android-support-v7-appcompat\res\values-v14\themes_base.xml:94: error: Error: No resource found that matches the given name: attr ‘android:actionBarWidgetTheme’.
是什么导致的呢?如何修正?
回复summer_yang:修改编译用的SDK版本
Android Actionbar(标题栏)的背景设置
AndroidActionbar标题栏ActionbarSherlock
这东西Android官方文档是有的,这里顺便说下使用ActionbarSherlock时的设置。
For Android 3.0 and higher only(对于不需要兼容2.x时可以直接如下设置)
When supporting Android 3.0 and higher only, you can define the action bar’s background like this:
res/values/themes.xml
<?xml version="1.0" encoding="utf-8"?><resources> <!-- the theme applied to the application or activity --> <style name="CustomActionBarTheme" parent="@style/Theme.Holo.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> </style> <!-- ActionBar styles 背景主要就是这里设置了--> <style name="MyActionBar" parent="@style/Widget.Holo.Light.ActionBar.Solid.Inverse"> <item name="android:background">@drawable/actionbar_background</item> </style></resources>
actionbar_background背景资源如下:
<?xml version="1.0" encoding="utf-8"?> <color xmlns:android="http://schemas.android.com/apk/res/android" android:color="#7EC0EE"> </color>
For Android 2.1 and higher(需要兼容2.x时要做的如下)
When using the Support Library, the same theme as above must instead look like this:
res/values/themes.xml
<?xml version="1.0" encoding="utf-8"?><resources> <!-- the theme applied to the application or activity --> <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> <!-- Support library compatibility --> <item name="actionBarStyle">@style/MyActionBar</item> </style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> <item name="android:background">@drawable/actionbar_background</item> <!-- Support library compatibility --> <item name="background">@drawable/actionbar_background</item> </style></resources>
ActionbarSherlock也类似这样做,
Theme.AppCompat.Light.DarkActionBar换成Theme.Sherlock.Light;
Widget.AppCompat.Light.ActionBar.Solid.Inverse换成
Widget.Sherlock.Light.ActionBar.Solid.Inverse 就行了
更改返回按钮的图标
很多的Android应用左上角都有返回按钮
在Android的网站上 发现了2种可以更改的方法
1.在java代码环境中设置
actionBar = getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);actionBar.setHomeAsUpIndicator(R.drawable.back);
如果有错误提示 Call requires API level 18 (current min is 14): android.app.ActionBar#setHomeAsUpIndicator
说明当前的最小API等级低于18 那么就参考第二种方法了
2.在styles.xml中新增一种style
<style name="style_titlebar_normal" parent="Theme.AppCompat.Light"> <item name="android:homeAsUpIndicator">@drawable/back</item> <!--返回icon--> </style>
然后在AndroidManifest.xml中 在其Activity 的theme中设置成该style
<activity android:name="com.logic.activity.Activity1" android:theme="@style/style_titlebar_normal" > </activity>
这种方法对API level没有要求 就是略复杂些
- ActionBar(Undone)
- undone
- ListView(undone)
- Activity(undone)
- Filter(undone)
- MappingJackson2HttpMessageConverter(undone)
- 解题 UVA 10081 Undone
- undone有关链表
- undone搜索总论
- 【HTML】基础知识【UNDONE】
- 【HTML】HTML数据类型【UNDONE】
- recycleView的理解(UNDone)
- ActionBar
- ActionBar
- ActionBar
- Actionbar
- ActionBar
- actionbar
- 许愿墙
- Gamma分布
- 文件的特殊权限
- 分析一个设备驱动程序结构
- 【机器学习算法】之logistic回归
- ActionBar(Undone)
- Mysql Event SCHEDULE Job 定时任务
- http请求
- 带有语法强类型检查的事件总线(EventBus)框架再完善篇
- AlertDialog
- Java面试集锦06-继承和多态
- 八数码--HDU - 1043 Eight
- 10月英语启航
- DOJO组件生命周期(the life cycle of dojo widget)