Ваше обновление выглядит так же, как код в моем вопросе. Есть ли разница?

аю вертикальEditText для традиционного монгольского. Я успешно реализовал это, вставив слегка измененныйEditText внутри вращаетсяViewGroup, Мне нужно создать полностью настраиваемое контекстное меню, потому что системное не поддерживает вертикальный текст, а также не поворачивается, когдаViewGroup вращается. Поэтому я хочу полностью отключить системное контекстное меню.

Обратите внимание, что это отличается от этих вопросов, которые просто пытаются отключить копирование / вставка / и т.д .:

Как отключить копирование / вставку из / в EditTextEditText: отключить всплывающее меню «Вставить / Заменить» в событии щелчка обработчика выбора текстакак отключить опцию вставки в Android EditTextAndroid: как полностью отключить функцию копирования и вставки в Edittext

Хотя в симуляторе не появляется контекстное меню, оно появляется в моем телефоне Android 5.0.2 Xiaomi.

Я пытался:

setCustomSelectionActionModeCallback "решение"setLongClickable(false); "решение"onTouchEvent "решение"

Я открыт для взлома, но мне нужно, чтобы он постоянно работал на разных устройствах. Марк Мерфи (Парень из общин)писал Некоторое время назад в ответ другому пользователю, пытающемуся сделать нечто подобное:

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

Мне не повезло?

Единственное, о чем я могу думать сейчас, это полностью переписатьTextView а такжеEditText с нуля (ну, путем изменения источника Android). Я знаю кого-то еще, кто делал что-то подобное, но его код не с открытым исходным кодом. Прежде чем я сделаю этот важный шаг, я хочу попробовать найти более простое решение здесь, о переполнении стека.

Обновить: Я пытался изменитьTextView Исходный код за последние два дня и выглядит как 6-месячный проект. Это масса взаимосвязанных классов. Мне нужно другое решение, но у меня нет идей.

MVCE

Это самый простой способ воссоздать проблему. Там нет ничего необходимого из моего обычаяEditText, Макет имеет единыйEditText сделано путем замены проекта по умолчанию Hello World'sTextView, Я изменил min API на 11, чтобы избежать использования устаревших методов.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText editText = (EditText) findViewById(R.id.edit_text);
        editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
            @Override
            public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { return false; }
            @Override
            public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) { return false; }
            @Override
            public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) { return false; }
            @Override
            public void onDestroyActionMode(ActionMode actionMode) { }
        });
    }
}

Контекстное меню в симуляторе (работает API 24) по-прежнему отображается, когда я нажимаю на курсор курсора (но не на длинный щелчок или двойной щелчок). Вот изображение:

На моем телефоне Xiaomi MIUI под управлением Android 5.0 я получаю контекстное меню во всех ситуациях (щелчок курсора, длительное нажатие, двойной щелчок).

Обновить

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

Ответы на вопрос(6)

Ваш ответ на вопрос