Android Api Demos登顶之路(二十七)Action Bar Usage
来源:互联网 发布:欧文总决赛数据统计 编辑:程序博客网 时间:2024/06/03 19:17
这个demo演示了actionbar的基本用法:定义menu的布局文件,向actionbar中添加菜单,设置菜单功能。
actions.xml
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_search" android:actionViewClass="android.widget.SearchView" android:icon="@android:drawable/ic_menu_search" android:showAsAction="always" android:title="Search"/> <item android:id="@+id/action_add" android:icon="@android:drawable/ic_menu_add" android:title="Add"/> <item android:id="@+id/action_edit" android:icon="@android:drawable/ic_menu_edit" android:showAsAction="ifRoom" android:title="Edit"/> <item android:id="@+id/action_share" android:icon="@android:drawable/ic_menu_share" android:showAsAction="ifRoom" android:title="Share"/> <item android:id="@+id/action_sort" android:icon="@android:drawable/ic_menu_sort_by_size" android:showAsAction="ifRoom" android:title="Sort"> <menu> <item android:id="@+id/action_sort_size" android:icon="@android:drawable/ic_menu_sort_by_size" android:onClick="onSort" android:title="By size"/> <item android:id="@+id/action_sort_alpha" android:icon="@android:drawable/ic_menu_sort_alphabetically" android:onClick="onSort" android:title="By alphabetically"/> </menu> </item></menu>
MainActivity
public class MainActivity extends Activity implements OnQueryTextListener { //用于显示搜索的内容 private TextView mSearchText; //用于记录排序模式的条目 private int mSortMode=-1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_ACTION_BAR); mSearchText=new TextView(this); setContentView(mSearchText); //一直显示更多选项 //setOverflowShowingAlways(); } /** * 利用反射的方法,让“更多”选项一直显示 */ private void setOverflowShowingAlways() { try { ViewConfiguration configuration = ViewConfiguration.get(this); Field field = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); field.setAccessible(true); field.setBoolean(configuration, false); } catch (Exception e) { e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { //得到菜单视图 getMenuInflater().inflate(R.menu.actions, menu); //获取搜索菜单的视图 SearchView searchView=(SearchView) menu.findItem(R.id.action_search).getActionView(); //设置搜索内容监听 searchView.setOnQueryTextListener(this); return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { if(mSortMode!=-1){ //将mSortMode记录的条目的图标取出 Drawable icon=menu.findItem(mSortMode).getIcon(); /*将sort条目的图标设置为刚取出的图标 需要注意的是由于sort条目设置了android:showAsAction="ifRoom"属性 当sort不在actionbar的首界面上显示时,由于在overflow中只有标题而没有icon 所以,你不会看到icon图标的变化。你可以尝试将ifRoom的值改为always,让其显示在actionbar 的首界面上你就会看到程序的效果了*/ menu.findItem(R.id.action_sort).setIcon(icon); } return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { Toast.makeText(this, "Select Item:"+item.getTitle(), 1).show(); return super.onOptionsItemSelected(item); } /* * 当提交查询内容时调用此方法 */ @Override public boolean onQueryTextSubmit(String query) { Toast.makeText(this, "Searching for:"+query+"...", 1).show(); return true; } /* * 当搜索内容发生变化时调用此方法 */ @Override public boolean onQueryTextChange(String newText) { newText=newText.isEmpty() ? "":"Query so far:"+newText; mSearchText.setText(newText); return true; } public void onSort(MenuItem item){ mSortMode=item.getItemId(); invalidateOptionsMenu(); }}
0 0
- Android Api Demos登顶之路(二十七)Action Bar Usage
- Android Api Demos登顶之路(二十五)Action Bar Mechanics
- Android Api Demos登顶之路(二十六)Action Bar Tabs
- Android Api Demos登顶之路(十七)Redirection
- Android Api Demos登顶之路(二十八)Setting Action Provider
- Android Api Demos登顶之路(二十九)Share Action Provider
- Android Api Demos登顶之路(二)
- Android Api Demos登顶之路(二十二)SetWallpaper
- Android Api Demos登顶之路(二十三)SoftInputModes
- Android Api Demos登顶之路(二十五)Wallpaper
- Android Api Demos登顶之路(五十一)Notification-->Status Bar
- Android Api Demos登顶之路(三)
- Android Api Demos登顶之路(四)
- Android Api Demos登顶之路(五)
- Android Api Demos登顶之路(六)
- Android Api Demos登顶之路(七)
- Android Api Demos登顶之路(八)
- Android Api Demos登顶之路(九)
- hdu 5363
- 画图软件Microsoft visio下载安装及使用
- 多线程的安全
- java序列化与反序列化的区别
- java线程研究---(5)暂停Thread:yield
- Android Api Demos登顶之路(二十七)Action Bar Usage
- Kafka文件存储机制那些事
- IOS设计模式之单例设计模式
- js关于for循环里的setTimeout
- UVALive - 3977 Summits (BFS染色)
- YUV420p格式
- MFC 双击控件 提示重载函数已存在
- Ubuntu 10.04建立源码树实现最简单的驱动模块
- Majority Element II