Android ActionBar Item学习笔记

分类:Android 控件 367人阅读 评论(0) 收藏 举报

本例主要讲述ActionBar Item的使用方法。在手机上,按Menu键出现Menu菜单,但是在平板中可以把菜单放在ActionBar里面,放置的Item也比手机上多,下面详细介绍其用法:

1、在Androidmanifest.xml里面加上<uses-sdkandroid:minSdkVersion="11"/>或者<uses-sdkandroid:targetSdkVersion="11"/>,要使版本号在3.0以上,这样系统就自动把Menu放在ActionBar上面。

2、准备一个menu.xml,以便加载。其实这就是一个传统的menu布局,只是多了android:showAsAction="ifRoom|withText"这个属性,ifRoom的意思就是说只要ActionBar上有空间,就把该Item显示出来,否则就坠在后面。

view plain
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <menuxmlns:android="http://schemas.android.com/apk/res/android">
  3. <itemandroid:id="@+id/action_search"
  4. android:icon="@android:drawable/ic_menu_search"
  5. android:title="action_bar_search"
  6. android:showAsAction="ifRoom"
  7. android:actionViewClass="android.widget.SearchView"/>
  8. <itemandroid:id="@+id/action_add"
  9. android:icon="@android:drawable/ic_menu_add"
  10. android:title="action_bar_add"/>
  11. <itemandroid:id="@+id/action_edit"
  12. android:icon="@android:drawable/ic_menu_edit"
  13. android:showAsAction="always"
  14. android:title="action_bar_edit"/>
  15. <itemandroid:id="@+id/action_share"
  16. android:icon="@android:drawable/ic_menu_share"
  17. android:title="action_bar_share"
  18. android:showAsAction="ifRoom"/>
  19. <itemandroid:id="@+id/action_sort"
  20. android:icon="@android:drawable/ic_menu_sort_by_size"
  21. android:title="action_bar_sort"
  22. android:showAsAction="ifRoom">
  23. <menu>
  24. <itemandroid:id="@+id/action_sort_size"
  25. android:icon="@android:drawable/ic_menu_sort_by_size"
  26. android:title="action_bar_sort_size"
  27. android:onClick="onSort"/>
  28. <itemandroid:id="@+id/action_sort_alpha"
  29. android:icon="@android:drawable/ic_menu_sort_alphabetically"
  30. android:title="action_bar_sort_alpha"
  31. android:onClick="onSort"/>
  32. </menu>
  33. </item>
  34. </menu>

3、Activity中的代码:

view plain
  1. <preclass="java"name="code">importandroid.app.Activity;
  2. importandroid.graphics.drawable.Drawable;
  3. importandroid.os.Bundle;
  4. importandroid.view.Menu;
  5. importandroid.view.MenuInflater;
  6. importandroid.view.MenuItem;
  7. importandroid.widget.SearchView;
  8. importandroid.widget.SearchView.OnQueryTextListener;
  9. importandroid.widget.TextView;
  10. importandroid.widget.Toast;
  11. /**
  12. *ThisdemonstratesidiomaticusageoftheActionBar.ThedefaultHoneycombtheme
  13. *includestheactionbarbydefaultandamenuresourceisusedtopopulatethe
  14. *menudataitself.Ifyou'dliketoseehowthesethingsworkunderthehood,see
  15. *ActionBarMechanics.
  16. */
  17. publicclassActionBarUsageActivityextendsActivityimplementsOnQueryTextListener{
  18. TextViewmSearchText;
  19. intmSortMode=-1;
  20. @Override
  21. protectedvoidonCreate(BundlesavedInstanceState){
  22. super.onCreate(savedInstanceState);
  23. mSearchText=newTextView(this);
  24. setContentView(mSearchText);
  25. }
  26. //和加载传统的menu一样,重写onCreateOptionsMenu方法
  27. @Override
  28. publicbooleanonCreateOptionsMenu(Menumenu){
  29. MenuInflaterinflater=getMenuInflater();
  30. inflater.inflate(R.menu.actions,menu);
  31. SearchViewsearchView=(SearchView)menu.findItem(R.id.action_search).getActionView();
  32. searchView.setOnQueryTextListener(this);
  33. returntrue;
  34. }
  35. @Override
  36. publicbooleanonPrepareOptionsMenu(Menumenu){
  37. if(mSortMode!=-1){
  38. Drawableicon=menu.findItem(mSortMode).getIcon();
  39. menu.findItem(R.id.action_sort).setIcon(icon);
  40. }
  41. returnsuper.onPrepareOptionsMenu(menu);
  42. }
  43. //和相应传统的menu一样,重写onOptionsItemSelected方法
  44. @Override
  45. publicbooleanonOptionsItemSelected(MenuItemitem){
  46. Toast.makeText(this,"SelectedItem:"+item.getTitle(),Toast.LENGTH_SHORT).show();
  47. returntrue;
  48. }
  49. //ThismethodisspecifiedasanonClickhandlerinthemenuxmlandwill
  50. //takeprecedenceovertheActivity'sonOptionsItemSelectedmethod.
  51. //Seeres/menu/actions.xmlformoreinfo.
  52. publicvoidonSort(MenuItemitem){
  53. mSortMode=item.getItemId();
  54. //RequestacalltoonPrepareOptionsMenusowecanchangethesorticon
  55. invalidateOptionsMenu();
  56. }
  57. //ThefollowingcallbacksarecalledfortheSearchView.OnQueryChangeListener
  58. //FormoreaboutusingSearchView,seesrc/.../view/SearchView1.javaandSearchView2.java
  59. publicbooleanonQueryTextChange(StringnewText){
  60. newText=newText.isEmpty()?"":"Querysofar:"+newText;
  61. mSearchText.setText(newText);
  62. returntrue;
  63. }
  64. publicbooleanonQueryTextSubmit(Stringquery){
  65. Toast.makeText(this,"Searchingfor:"+query+"...",Toast.LENGTH_SHORT).show();
  66. returntrue;
  67. }
  68. }

更多相关文章

  1. Android(安卓)处理屏幕旋转
  2. Android底部菜单栏的实现
  3. Context Menu
  4. android 最火的开源项目
  5. Android带多选功能的PhotoPicker
  6. android基础知识---重写软键盘回车的点击事件
  7. Android实现自定义菜单
  8. Eclipse New菜单中没有Android(安卓)Project选项
  9. 安卓(Android)实现选择时间功能

随机推荐

  1. 通过ijetty获取android设备的截图
  2. Android 增量更新实例(Smart App Updates)
  3. Android 数据存储之SQLite数据库
  4. Android -- ContentProvider
  5. Android客户端与服务端通信乱码问题的解
  6. [置顶] 我的Android进阶之旅------>andro
  7. Retrofit简单使用(Kotlin)
  8. 转:Android 学习笔记3(控件)
  9. android中开机自动运行程序
  10. Android自带的TabLayout实现滑动翻页效果