Android:动作模式关闭后动作栏的怪异外观

时间:2016-09-13 07:53:16

标签: android listview android-actionbar android-actionmode multichoiceitems

我尝试使用multichoice模式实现ListView时发现了一个奇怪的问题。我使用CHOICE_MODE_MULTIPLE_MODAL打开多重模式,MultiChoiceModeListener提供操作模式菜单和处理事件。这是我的代码:

    ListView listView = (ListView) findViewById(R.id.list);
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.item,
            new String[] {"111", "222", "333", "444", "555"});
    listView.setAdapter(adapter);

    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
        @Override
        public void onItemCheckedStateChanged(ActionMode actionMode, int i, long l, boolean b) {
        }

        @Override
        public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
            MenuInflater inflater = actionMode.getMenuInflater();
            inflater.inflate(R.menu.my_menu, menu); // my_menu is just stub empty menu
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
            return false;
        }

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

它工作正常,我可以选择我的列表项并显示操作模式:screenshot。问题是,当我旋转我的设备然后关闭操作模式时,按下后退按钮,有时(不是每次)操作栏变得丑陋,背景奇怪: screenshot

它在我的设备上使用Android 5.0进行复制。代码非常简单,我不认为这是我的代码中的错误。也许,它是Android系统中的内部错误?有没有人面对这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您应强制ActionBar重新绘制自己。在这里检查我的答案:

https://stackoverflow.com/a/53997778/3185295