Ваше обновление выглядит так же, как код в моем вопросе. Есть ли разница?
аю вертикаль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 я получаю контекстное меню во всех ситуациях (щелчок курсора, длительное нажатие, двойной щелчок).
ОбновитьРешение Аритры Рой работает в симуляторе, на некоторых других устройствах, которые он тестировал, и на моем устройстве. Я принял его ответ, потому что он решает мою первоначальную проблему. Единственным негативным побочным эффектом является то, что выделение текста также отключено.