2011-02-03 2 views
4

Можно ли добавить что-то в список элементов, которые появляются, когда пользователь долго нажимает на любой текст редактирования? (Вырезать, скопировать вставку, выбрать текст, выбрать все, метод ввода) Я хочу добавить еще один вариант в это меню, но не могу понять это.Как добавить опции в контекстное меню Android «Редактировать текст»

Существует дубликат этого вопроса here, а последний комментарий к первому ответу говорит, что это «возможно, но не очень». Затем нить умирает.

Я бы очень хотел, чтобы увидеть любой рабочий пример, загрязнен или нет :)

+0

Android 6.0 и выше теперь поддерживает это. https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-text-selection – PsyGik

ответ

2

Можно ли добавить что-то к списку элементов, который появляется, когда пользователь нажимает на длинные любого редактирования текста?

Если в вашей деятельности EditText, вы можете сделать это через onCreateContextMenu().

Если EditText нет в вашей деятельности, значит нет.

Здесь есть дубликат этого вопроса, и последний комментарий к первому ответу говорит, что это «возможно, но не очень». Затем нить умирает.

Во-первых, этому посту два года, что почти навсегда в Android-годы.

Во-вторых, я вполне уверен, что г-н Хаман в своей оценке неверен.

+0

У вас был ответ перед выпуском сотовой сборки, что теперь? как насчет setCustomSelectionActionModeCallback? – Selvin

+0

@ Селвин: По крайней мере, на раннем этапе это было ненадежно. Я попытался использовать его для моего RichEditText и обнаружил, что некоторые производители в основном проигнорировали этот вызов.Я не пробовал это в последние несколько лет, поэтому я не знаю, лучше ли соблюдаться при тестировании совместимости или в противном случае стал в целом безопасным для использования. – CommonsWare

2

Оба являются да!

Во-первых, вам нужно создать класс, реализация OnCreateContextMenuListener,

public class CMenu implements OnCreateContextMenuListener { 

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 

    //Do Something , Like: 

    menu.add(0, 1, 0, "copy"); 
    menu.add(0, 2, 0, "paste"); 
    } 
} 

затем

editText.setOnCreateContextMenuListener(cMenu); 

Это нормально сейчас ~

1

Добавление еще несколько пунктов меню к существующему контекстного меню EditText возможно только в том случае, если EditText находится в вашей деятельности. Это можно сделать через onCreateContextMenu().

Если EditText не входит в вашу деятельность, тогда это невозможно.

// добавлять элементы в меню

EditText UserNameEditText = (EditText)findViewById(R.id.usernameEdittext); 
registerForContextMenu(UserNameEditText); 

// переопределить в контекстном меню

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 

    if (v.getId()==R.id.usernameEdittext) 
    { 
     menu.add(0, 1, 0, "Fetch New Username"); 
     menu.add(0, 2, 0, "Check For Duplicate"); 
    } 
} 

Если контекстное меню не вызывался, то ваш EditText не в вашей деятельности.

+0

Пожалуйста, подумайте о форматировании сообщения для лучшей читаемости – Anton

Смежные вопросы