Я реализовал Borderless Editor в своем приложении Xamarin.Forms, используя Custom EditorRenderer. Но я сталкиваюсь с проблемой, что текст редактора вообще не может быть выделен ни в обоих случаях, ни в элементе управления редактора форм, ни в визуализированном элементе управления редактора. Мое приложение имеет функцию, позволяющую копировать текст и вставлять текст в редакторе во время набора текста, как в любом другом приложении для редактирования текста. Это базовая функция c в большинстве приложений, и она есть по умолчанию. Но это не работает в моем приложении. Я попытался включить его через
Control.SetTextIsSelectable (true);
, но все равно он не работает. Я пробовал и другие вещи, такие как:
Control.CustomSelectionActionModeCallback = new CustomSelectionActionModeCallback (); Control.CustomInsertionActionModeCallback = new CustomInsertionActionModeCallback ();
Но ничего не работает вообще, и текст не выделяется даже одним словом. У кого-нибудь есть идеи по этому поводу? Как я могу сделать текст выбираемым и разрешить функцию вставки копии по умолчанию в настраиваемом редакторе?
Вот мой код в Xaml:
<renderer:BorderlessEditor
Grid.Row="1"
x:Name="UserTextEditorAndroid"
BackgroundColor="{StaticResource WhiteColor}"
HeightRequest="350"
Margin="20,2"
MaxLength="1024"
IsReadOnly="{Binding Source={x:Reference LongTextTemplate}, Path=Editable, Converter={StaticResource InverseBool}}" />
А пользовательский код визуализации:
public class BorderlessEditorRenderer : EditorRenderer
{
public BorderlessEditorRenderer()
{
}
public static void Init() { }
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
Control.Background = null;
var layoutParams = new MarginLayoutParams(Control.LayoutParameters);
layoutParams.SetMargins(0, 0, 0, 0);
LayoutParameters = layoutParams;
Control.LayoutParameters = layoutParams;
Control.SetPadding(0, 0, 0, 0);
SetPadding(0, 0, 0, 0);
Control.SetTextIsSelectable(true);
Control.VerticalScrollBarEnabled = false;
}
}
}
Даже если я использую собственный редактор Xamarin.Forms в Xaml вместо пользовательского рендерера, он также не работает вообще. Текст по-прежнему недоступен для выбора.