2

У меня есть EditText, и когда я выполняю длинный щелчок, выбирается слово, и происходят две другие вещи.Android: Удалить «вставить» «заменить» текстовые пузыри в EditText

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

Во-вторых, появляется другое контекстное меню вокруг слова, например пузырьки параметров, с такими вещами, как «вставить» и «заменить». Я не уверен, что эти пузырьки специфичны для устройства (например, Samsung/Nexus7).

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

Я заметил, что функция «супер» в performLongClick является родительской функцией для обоих этих вызовов. Если вы заблокируете его, это не произойдет. Но я еще не нашел никаких переопределений, которые позволили бы мне выбрать один, а не другой.

изменить: оба контекстных меню также будут выполняться, если вы выполните двойной кран.

public class MyExtendedEditText extends EditText { 
.... 
@Override 
public boolean performLongClick() { 

//Super function selects word (otherwise a=b), and calls action bar, 
//and text selection bubbles 

boolean retval =super.performLongClick(); 

    int a = getSelectionStart(); 
    int b = getSelectionEnd(); 

    Log.i("System.out", "long click " + a + " " + b); 


    return retval; 
} 

ответ

0

«контекстная панель действий», который появляется в верхней части приложения, с пиктограммами для копировать, вырезать, вставить, заменить, выберите все могут быть отключены следующие примеры, приведенные в этих растворах:

Что касается «варианты пузырьков» (в соответствии с изображением ниже), это появляется, когда выбор ручка текста s щелкает и есть текст в буфере обмена, или какой-нибудь текст, который будет заменен:

Text selection handle with paste menu

Чтобы отключить это, необходим, чтобы предотвратить PASTE/ЗАМЕНИТЬ меню появляться в show() методе из (не документально) android.widget.Editor класс. Перед появлением меню выполняется проверка на if (!canPaste && !canSuggest) return;. Два метода, которые используются в качестве основы для установки этих переменных оба в классе EditText:

Более полный ответ, с примером переопределения из EditText класса, и включение всех решений, перечисленных, является available here.