Как отобразить "Вырезать", "Копировать", выделить все и поделиться параметрами на панели действий?

Я видел некоторые приложения, такие как gmail и другие приложения, в которых, где есть editText и textView, при нажатии на текст долгим нажатием, я вижу, что на панели действий появляется меню, скажем, вырезать, скопировать, выбрать все, поделиться и появляется опция поиска.

Такое же поведение разработчик хотел включить в мое приложение.

Как мне этого добиться?

2 ответа

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

Ссылка: Учебное пособие: Контекстная панель действий (CAB) - Android
Код: GitHub: контекстная панель действий (CAB)

введите описание изображения здесь

редактировать

В макете EditText добавьте свойство ниже, чтобы отобразить стандартное контекстное меню Android для копирования / вставки.

android:textIsSelectable.

Проверьте этот урок также.

Если вы хотите только копировать, вы можете установить следующий тег в xml textview

андроид:textIsSelectable="истина"

Если вы хотите искать, поделитесь опциями как означает, что вы должны создать Contextual ActionBar следующим образом

добавить следующие в вашей деятельности

ActionMode mActionMode;

и вы должны создать интерфейс ActionMondeCallback

class ActionBarCallback implements ActionMode.Callback
    {

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

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

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

            int id = item.getItemId();
            if(id == R.id.item_delete)
            {
                tv.setText("");
                Toast.makeText(MainActivity.this,"option deleted",Toast.LENGTH_LONG);
            }
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    }

где contextual_menu.xml выглядит следующим образом с необходимыми значками

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.example.letschat"
    >
    <item
        android:id="@+id/item_search"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="ifRoom|withText"
        android:title="Delete"
        android:titleCondensed="Delete">
    </item>
    <item
        android:id="@+id/item_delete"
        android:icon="@android:drawable/ic_menu_delete"
        app:showAsAction="ifRoom|withText"
        android:title="Delete"
        android:titleCondensed="Delete">
    </item>
    <item
        android:id="@+id/item_share"
        android:icon="@android:drawable/ic_menu_share"
        app:showAsAction="ifRoom|withText"
        android:title="Delete"
        android:titleCondensed="Delete">
    </item>
</menu>

Теперь включите ваш Contextual ActionBar(CAB). Как показано здесь, я включаю при длинном щелчке текстовое представление.

yourtextView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                mActionMode = MainActivity.this.startActionMode(new ActionBarCallback());
                return true;
            }
        });

Затем вы должны написать свое собственное действие при нажатии на каждое событие действия в CAB

Для получения подробной информации перейдите по ссылке

Другие вопросы по тегам