Как отобразить "Вырезать", "Копировать", выделить все и поделиться параметрами на панели действий?
Я видел некоторые приложения, такие как 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
Для получения подробной информации перейдите по ссылке