
我正在尝试实现这样的功能:当我长按一个列表项时,动作模式应该开始,并且可以删除一个或多个项目.
我在MainActivity documentsActivity中开始搜索,它使用ListVIEw及其项启动Fragment documentsFragment. listadapter通过Fragment中onCreate中的方法调用setlistadapter(this.documentsAdapter)进行初始化和设置.我在片段中的onActivityCreated的ListvIEw上设置了各种监听器:
public voID onActivityCreated(Bundle savedInstanceState) { getListVIEw().setChoiceMode(ListVIEw.CHOICE_MODE_MulTIPLE_MODAL); getListVIEw().setonItemLongClickListener(new AdapterVIEw.OnItemLongClickListener() { @OverrIDe public boolean onItemLongClick(AdapterVIEw> parent,VIEw vIEw,int position,long ID) { getListVIEw().setItemChecked(position,true); return true; }}); getListVIEw().setMultiChoiceModeListener(new AbsListVIEw.MultiChoiceModeListener() { @OverrIDe public boolean onCreateActionMode(ActionMode mode,Menu menu) { menu.clear(); ((documentsActivity)getActivity()).getMenuInflater().inflate(R.menu.documents_context_menu,menu); return true; } }); super.onActivityCreated(savedInstanceState);}当我长时间点击Listitem时, *** 作模式开始,菜单documents_context_menu似乎是 *** 作栏.但问题是, *** 作栏出现在工具栏上方,工具栏不会消失(参见图片).
我试图调用getSupportActionbar().hIDe()或将其设置为null或甚至使用其他样式/主题.一切都行不通.有时蓝色工具栏是完全白色的,但这就是全部.
我完全不知道为什么工具栏不会消失.你能提一些建议吗?
提前致谢!
_____更新1 _____
这是styles.xml
这就是活动中设置 *** 作栏的方式:
protected voID onCreate(Bundle savedInstanceState) { handleIntent(getIntent()); requestwindowFeature(5); super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_documents); Toolbar mToolbar = (Toolbar) findVIEwByID(R.ID.tool_bar); setSupportActionbar(mToolbar); args = getIntent().getExtras(); if (findVIEwByID(R.ID.container_documents) != null && savedInstanceState == null) { showdocumentsFragment(); }}最佳答案所有这些答案都很好你应该尝试它们但你需要的是一个ContextualMenu所以你应该首先将视图添加到registerForContextMenu()所以菜单知道哪些菜单是上下文然后实现你的Activity的onCreateContextMenu@OverrIDepublic voID onCreateContextMenu(ContextMenu menu,VIEw v,ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu,v,menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu,menu);}然后像这样实现onContextItemSelected():
@OverrIDepublic boolean onContextItemSelected(MenuItem item) {AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();switch (item.getItemID()) { case R.ID.edit: editNote(info.ID); return true; case R.ID.delete: deleteNote(info.ID); return true; default: return super.onContextItemSelected(item);}}然后你必须对视图执行一个动作并实现AbsListVIEw.MultiChoiceModeListener然后使用CHOICE_MODE_MulTIPLE_MODAL参数调用setChoiceMode().像这样 :
ListVIEw ListVIEw = getListVIEw();ListVIEw.setChoiceMode(ListVIEw.CHOICE_MODE_MulTIPLE_MODAL);ListVIEw.setMultiChoiceModeListener(new MultiChoiceModeListener() {@OverrIDepublic voID onItemCheckedStateChanged(ActionMode mode,long ID,boolean checked) { // Here you can do something when items are selected/de-selected,// such as update the Title in the CAB}@OverrIDepublic boolean onActionItemClicked(ActionMode mode,MenuItem item) { // Respond to clicks on the actions in the CAB switch (item.getItemID()) { case R.ID.menu_delete: deleteSelectedItems(); mode.finish(); // Action picked,so close the CAB return true; default: return false; }}@OverrIDepublic boolean onCreateActionMode(ActionMode mode,Menu menu) { // Inflate the menu for the CAB MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.context,menu); return true;}@OverrIDepublic voID onDestroyActionMode(ActionMode mode) { // Here you can make any necessary updates to the activity when // the CAB is removed. By default,selected items are deselected/unchecked.}@OverrIDepublic boolean onPrepareActionMode(ActionMode mode,Menu menu) { // Here you can perform updates to the CAB due to // an 所有我说的,最终更多,你可以在this android developer documentation找到 总结
以上是内存溢出为你收集整理的android – 工具栏不会在动作模式下消失全部内容,希望文章能够帮你解决android – 工具栏不会在动作模式下消失所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)