выбранный элемент в пользовательском списке с контекстной панелью действий

Недавно я начал использовать панели действий android и панели контекстных действий (CAB).

У меня есть только одно действие - ListActivity. Обычно я использую следующий фрагмент кода, чтобы «активировать» CAB:

ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {

    @Override
    public void onItemCheckedStateChanged(ActionMode mode, int position,
                                      long id, boolean checked) {
        // Here you can do something when items are selected/de-selected,
        // such as update the title in the CAB
    }

    @Override
    public 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;
        }
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate the menu for the CAB
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.context, menu);
        return true;
    }

    @Override
    public 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.
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        // Here you can perform updates to the CAB due to
        // an invalidate() request
        return false;
    }
});

Макет списка:






    
    

    

        
        

        
        

        
        

        
        
    

И в main.xml:



Теперь, если я сделаю долгий щелчок по элементу списка, появится CAB как и ожидалось:

cab

Я использую MultiChoiceModeListener, но, к сожалению, выбранные элементы списка не меняют фон, как в приведенном здесь примере (светло-синий фон после выбора элемента):

enter image description here

Должен ли я использовать настраиваемый селектор? Или есть стандартная процедура, как Android справляется с этим, и мне просто нужно сделать мои LinearLayouts прозрачными? Я также пробовал следующее, но безуспешно:

Фон элемента ListView с помощью настраиваемого селектора

Было бы здорово, если бы кто-нибудь мог указать мне правильное направление. Пожалуйста, дайте мне знать, если вам понадобится больше кода приложения или файлов xml.

42
задан Community 23 May 2017 в 12:24
поделиться