Настройка дефолтного контекстного меню выделения текста на Android может быть выполнена с помощью использования класса EditText
, который предоставляет встроенный функционал для работы с текстом.
1. Создайте новый проект Android Studio или откройте существующий проект.
2. Откройте XML-файл макета, в котором нужно добавить поле для ввода текста. Например, activity_main.xml
.
3. Внутри вашего XML-файла добавьте элемент EditText
:
<EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Пример текста для выделения" />
4. Откройте Java
-файл активности, где нужно настроить контекстное меню. Например, MainActivity.java
.
5. Создайте поле класса для хранения экземпляра класса EditText
:
private EditText editText;
6. В методе onCreate()
найдите поле в макете по его id
:
editText = findViewById(R.id.editText);
7. Чтобы включить контекстное меню выделения текста, добавьте следующий код в метод onCreate()
:
registerForContextMenu(editText);
8. Определите методы onCreateContextMenu()
и onContextItemSelected()
для обработки событий контекстного меню.
9. Внутри метода onCreateContextMenu()
настройте элементы контекстного меню, добавив их с помощью метода add()
:
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.context_menu, menu); }
10. Создайте XML-файл ресурсов для контекстного меню, например, context_menu.xml
. В этом файле можете добавить пункты меню, которые быть показаны при выделении текста в поле ввода. Например:
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_copy" android:title="Копировать" /> <item android:id="@+id/menu_paste" android:title="Вставить" /> <item android:id="@+id/menu_cut" android:title="Вырезать" /> </menu>
11. В методе onContextItemSelected()
обработайте выбранный пункт меню:
@Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_copy: // Ваш код обработки пункта "Копировать" return true; case R.id.menu_paste: // Ваш код обработки пункта "Вставить" return true; case R.id.menu_cut: // Ваш код обработки пункта "Вырезать" return true; default: return super.onContextItemSelected(item); } }
Готово! Теперь, при долгом нажатии на текст в поле ввода, будет отображаться контекстное меню с заданными пунктами действий. Вы можете настроить обработку каждого пункта меню по своему усмотрению.