Я хочу отключить параметр копирования/вставки моего элемента управления вводом в приложении форм Xamarin. Для этого я использую пользовательский рендерер. Текущее решение работает на всех остальных устройствах, кроме Redmi Note 8. Это мой код рендерера.
class MyEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.CustomSelectionActionModeCallback = new Callback();
Control.CustomInsertionActionModeCallback = new Callback();
Console.WriteLine("CustomSelectionActionModeCallback");
Control.SetTextIsSelectable(false);
Control.LongClickable = false;
}
}
}
public class Callback : Java.Lang.Object, ActionMode.ICallback
{
public bool OnActionItemClicked(ActionMode mode, IMenuItem item)
{
Console.WriteLine("OnActionItemClicked");
return true;
}
public bool OnCreateActionMode(ActionMode mode, IMenu menu)
{
Console.WriteLine("OnCreateActionMode");
menu.Clear();
return false;
}
public void OnDestroyActionMode(ActionMode mode) {
Console.WriteLine("OnDestroyActionMode");
}
public bool OnPrepareActionMode(ActionMode mode, IMenu menu)
{
Console.WriteLine("OnPrepareActionMode");
menu.Clear();
menu.Close();
return true;
}
}
}
Таким образом, длинное нажатие отключается в Redmi Note 8, но по-прежнему появляется синяя цветная точка. При нажатии на это он по-прежнему показывает мне вариант копирования/вставки. Это происходит только в Redmi Note 8. И в моем коде не происходит никакого другого обратного вызова, кроме OnDestroyActionMode, и я не могу выполнить menu.Clear. В других устройствах эта опция отключается с помощью этого кода.
Control.SetTextIsSelectable(false);
Вот как это отображается на устройстве Redmi Note 8.
Я указал эти ссылки, потому что эта проблема очень похожа на мою, но это не помогло.
Отключить контекстное меню EditText
EditText: отключить всплывающее меню "Вставить/Заменить" в событии щелчка обработчика выбора текста
Как вы можете видеть на изображении, на устройстве отображается опция вставки. Я понятия не имею, как исправить эту ошибку, какие-либо предложения?
#IF __LOLLIPOP__
....#ELIF __PIE__
. Является ли это той же версией, что и другие устройства, если да, я бы попытался найти соответствующий API для этой версии, поскольку все меняется и устаревает и т. д. - person Axemasta   schedule 26.07.2021