繁体   English   中英

ListView:隐藏上下文操作栏

[英]ListView: hide Contextual Action Bar

我正在遵循使用上下文操作模式官方指南,如下所示:

    listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
    listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {

        @Override
        public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            MenuInflater inflater = mode.getMenuInflater();
            inflater.inflate(R.menu.shelf_context, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return true;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            // some processing...
            return true;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
        }
    });

我的listView在ViewPager内的Fragment内,所以当片段不可见时,我想隐藏上下文操作栏。 但是我该怎么做呢? 我调用listView.clearChoices()清除选择,但是CAB仍然可见:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (!isVisibleToUser) {
        listView.clearChoices(); // CAB is still visible.
    }
}

mode.finish()不起作用?

case R.id.action_remove:
    mode.finish();

经过一番研究,我发现了一种可行的方法:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (!isVisibleToUser) {
        listView.clearChoices();
        listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL); // this strange hack dismisses the CAB.
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM