ActionBar的使用以及例子

来源:互联网 发布:笑傲江湖 版本 知乎 编辑:程序博客网 时间:2024/06/04 20:06
1、ActionBar主要功能:
        Action Bar被认为是新版Android系统中最重要的交互元素,在程序运行中一直置于顶部,主要起到的作用在于:
1)突出显示一些重要操作(如“注册”、“登录”、“搜索”等)。将平时隐藏的选项菜单显示成活动项ActionItem。
2)在程序中保持统一的页面导航和切换方式。这种基于Tab的导航方式,可以切换多个Fragment。
3)提供基于下拉的导航菜单
4)使用程序logo,作为返回APP的HOME主页面或向上的导航操作。
(四)、ActionBar中添加Action View:
    1、Action的学习要掌握如何将选项菜单显示成Action Item;
    2、要掌握如何启动程序Logo导航;
    3、ActionBar还可以添加Action View。
        调用方式1为:在xml文件中写上android:actionLayout="@layout/布局名"。
        调用方式2为:在xml文件中写上android:actionViewClass="android.widget.SearchView"。
(五)、ActionBar在窗体底部显示(分隔栏):
在清单配置文件中设置android:uiOptions属性为:splitActionBarWhenNarrow
可以在application或者activity节点中。
1、核心代码:

<activity
android:name="com.steven.android23.tab5_fragmentactionbartwo.MainActivity"
android:label="@string/app_name"
android:uiOptions="splitActionBarWhenNarrow">
(六)、ActionBar保护现场

1、目的:当横竖屏切换时,会让页面重新加载。在tab模式下,如何记住之前的tab索引呢?需要保护现场。

2、核心代码:

@Override
protectedvoid onSaveInstanceState(Bundle outState) {
Log.i(TAG, "==index:" + getActionBar().getSelectedNavigationIndex());
outState.putInt("tabindex", getActionBar().getSelectedNavigationIndex());
}


@Override
protectedvoid onRestoreInstanceState(Bundle savedInstanceState) {
getActionBar().setSelectedNavigationItem(
savedInstanceState.getInt("tabindex"));
}
第一个例子:使用选项菜单(optionMenu)来实现模糊查询联系人,并使用ListView显示的核心代码
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_search"
android:orderInCategory="100"
android:showAsAction="ifRoom|withText"
android:title="搜索"
android:actionViewClass="android.widget.SearchView"/>
</menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
MenuItem item=menu.findItem(R.id.action_search);
SearchView view = (SearchView) item.getActionView();
view.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
//点击搜索的时候才能模糊查询
@Override
public boolean onQueryTextSubmit(String query) {

String slection="display_name like ?";
String[] slectionArgs={"%"+query+"%"};
list=getContactList(slection,slectionArgs);
adapter.clear();
adapter.addAll(list);
adapter.notifyDataSetChanged();

return true;
}

//当文本改变的时候就可以实现模糊查询
@Override
public boolean onQueryTextChange(String newText) {
adapter.clear();
if (newText!=null){
List<String> newList=new ArrayList<String>();
Cursor cursor=mContentResolver.query(ContactsContract.Contacts.CONTENT_URI,null,"display_name like ?",new String[]{"%"+newText+"%"},null);
while (cursor.moveToNext()){
newList.add(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
}
adapter.addAll(newList);
adapter.notifyDataSetChanged();
}else {
list=getContactList(null,null);
adapter.addAll(list);

}
return true;
}
});

return super.onCreateOptionsMenu(menu);
}


0 0