最近喜欢上看英文的,经过几次的搜索中文后,发现中文没看懂,反而英文看懂了,想直接看英文的,不懂在看中文,会发现很多中文的,都是看了英文的,再自己进行转译的。
参考资料:
-
Android Working with Action Bar这篇很详细,主要是搜索框,spinner,图标的添加。
注意几点:- ActionBar的布局文件的设置在
res->menu->activity_main_actions.xml
- 主Activity通过
onCreateOptionsMenu
方法进行初始化。例如:
- ActionBar的布局文件的设置在
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_main_actions, menu);
return super.onCreateOptionsMenu(menu);
}
- 通过
onOptionsItemSelected
进行触发子项的点击事件。例如:Mm
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Take appropriate action for each action item click
switch (item.getItemId()) {
case R.id.action_search:
// search action
return true;
case R.id.action_location_found:
// location found
LocationFound();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Android Tab Layout with Swipeable Views -->微信前几板块的
tabhost
的切换改变actionbar的整体颜色:Android – Theming ActionBar and the SearchView within it,这个设置比较漂亮,但是要用上
android-support-v7-appcompat
,如何使用这个appcompat,情况这里【Android】設定 Support Library-
知识点:
-
1.
menu的显示方式boolean android.app.Activity.onCreateOptionsMenu(Menu menu)
的方法中,加入MenuItem actionItem = menu.add("Action Button");
actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
一共有
5种
显示方式:从不显示;如果有空间就显示;总是显示;显示时跟随文字;默认收缩其action view
> public static final int SHOW_AS_ACTION_NEVER = 0;
public static final int SHOW_AS_ACTION_IF_ROOM = 1;
public static final int SHOW_AS_ACTION_ALWAYS = 2;
public static final int SHOW_AS_ACTION_WITH_TEXT = 4;
public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; -
注意:
SHOW_AS_ACTION_WITH_TEX
竖屏状态不会显示,只有横屏的时候就会显示
设置了action view
默认是显示的,设置SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
则默认不显示。
-
2.
此方法设置后退或者点击的效果setDisplayHomeAsUpEnabled(true)
2.1
在actionbar
上显示后退的按钮。在
oncreate
方法上加入:
// get action bar
ActionBar actionBar = getActionBar();
// Enabling Up / Back navigation
actionBar.setDisplayHomeAsUpEnabled(true);
- 并且:在
androidmanifest.xmnl
相应的<Activity >
加入android:parentActivityName
,例如
<activity
android:name="info.androidhive.actionbar.LocationFound"
android:label="@string/activity_new_message"
android:parentActivityName="info.androidhive.actionbar.MainActivity" >
</activity>
将会回退到父系的`MainActivity`上。![Alt text](http://www.androidhive.info/wp-content/uploads/2013/11/android-action-bar-up-back-navigation.png?a942c6)
-
2.2
在actionbar
有点击的效果oncreate
加入:
> actionBar.setDisplayHomeAsUpEnabled(true);在
onOptionsItemSelected
中的id
为:android.R.id.home
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
toggle(); //动态判断自动关闭或开启SlidingMenu
return true;
}
return super.onOptionsItemSelected(item);
}
3.修改`actionbar`的样式,一种静态,一种动态,静态就直接在xml导入`style`属性,[Android Action Bar Style Generator](http://jgilfelt.github.io/android-actionbarstylegenerator/),所有主题的样式都用,包括`.9.png`图片。动态如下:
- 修改背景:
ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(0xadf1b1ff));
- 修改actionbar的分割线
```
<item name="android:actionBarDivider">@null</item>
```
奇怪的错误
-
actionbar
不见了,发现最新的sdk
里面用v7
包的Theme.Appcompat.Light
主题已经默认不带actionbar
了,跟以前发生了很大的区别,导致getActionBar()
的时候,得到的值为null。
- 教程:
【Android】啟用 Support Library 的 ActionBar
Android ActionBar完全解析,使用官方推荐的最佳导航栏
Android ActionBar的基本用法
enter link description here
修改样式的类型:
Android中自定义ActionBar的背景色等样式style
Android 弹无虚发之第三弹:ActionBar 更换背景、颜色、文字,自定义主题Style - 扩展知识:.9.png的制作,有强大的在线制作工具
研究Android中的9 patch的图片的原理以及如何去生成对应图片 - 资源:
Google 提供了一整套的 ActionBar 圖示讓開發人員下載使用