Android上下文菜单和上下文操作
2016-08-27 20:57
253 查看
定义上下文菜单资源
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_item_delete_crime" android:icon="@android:drawable/ic_menu_delete" android:title="@string/delete_crime"/> </menu>
实例化上下文菜单
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { getActivity().getMenuInflater().inflate(R.menu.crime_list_item_context, menu); }
默认情况下,长按视图不会触发上下文菜单的创建。需要调用下面的函数使能上下文菜单功能:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(TAG, "onCreateView"); getActivity().setTitle(R.string.crime_title); View v = super.onCreateView(inflater, container, savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { if (mSubtitleVisible) { getActivity().getActionBar().setSubtitle(R.string.subtitle); } } // 为上下文菜单登记视图 ListView listView = (ListView) v.findViewById(android.R.id.list); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // 低版本使用浮动操作 registerForContextMenu(listView); } else { // 高版本使用操作栏模式,并开启多选 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override public void onDestroyActionMode(ActionMode mode) { } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.crime_list_item_context, menu); return true; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.menu_item_delete_crime: CrimeAdapter adapter = (CrimeAdapter) getListAdapter(); CrimeLab crimeLab = CrimeLab.get(getActivity()); for (int i = adapter.getCount() - 1; i >= 0; i--) { if (getListView().isItemChecked(i)) { crimeLab.deleteCrime(adapter.getItem(i)); } } mode.finish(); adapter.notifyDataSetChanged(); return true; default: return false; } } @Override public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { } }); } return v; }
改变背景
不向其它drawable资源,state list drawable资源通常和屏幕显示像素密度无关,因而只存放在不带修饰符的drawable目录中。<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/darker_gray" android:state_activated="true"></item> </selector>
以上XML告诉我们:当引用该drawable资源的视图处于激活状态时,则使用android:drawable属性指定的资源;反之,则不采取任何操作。
查看详细代码
点击查看代码相关文章推荐
- Android 上下文菜单与上下文操作模式
- android的上下文菜单和上下文操作模式
- 第 18 章 上下文菜单与上下文操作模式
- 上下文菜单与上下文操作模式
- 10.10上下文菜单与上下文操作模式。
- 上下文菜单与上下文操作模式
- Android Contextual ActionBar (CAB)上下文操作栏使用指南
- Android手机系统adb操作命令详解
- android文件操作与图片压缩
- android 操作图像像素
- android mapview地图操作
- android中插入一条SMS短信内容(可用于恢复SMS短信操作)
- android 模拟器访问现有数据库操作。
- 获取打印机设备上下文进行打印操作
- Android操作framebuffer[zz]
- android的文件操作。(未整理完成)
- Android开发——对sdcard扩展卡文件操作
- android数据库操作会出现Leak found,即出现泄漏问题解决
- Android 文件操作 读/写
- 学习Android的文件基本I/0输入输出流的操作