#c# #android #xamarin #xamarin.forms #xamarin.android
#c# #Android #xamarin #xamarin.forms #xamarin.android
Вопрос:
Я использую формы Xamarin для отображения редактора, который допускает многострочный текст. Однако, когда я долго нажимаю в окне редактора, когда в нем уже более 1 строки текста, меню для выбора / вырезания / копирования текста не отображается. Как мне включить это меню? Это работает, если это одна строка текста.
Я уже установил для этого значение true, поэтому оно должно работать, но не работает. Control.EditText.SetTextIsSelectable
Это код, который у меня есть в проекте Android.
[assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace MyProject.Droid.MRenderers
{
public class CustomEditorRenderer : MaterialEditorRenderer
{
public CustomEditorRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
Control?.SetBackgroundColor(Android.Graphics.Color.Transparent);
if (Control != null)
{
//This is the HeightRequest
var ElementHeightRequest = Element.HeightRequest;
//Convert it to Pixels
var EditTextHeight= ConvertToPixels(ElementHeightRequest);
//Set the Control's EditText height
Control.EditText.SetHeight(200);
Control.EditText.SetTextIsSelectable(true);
Control.EditText.Background = null;
Control.EditText.SetBackgroundColor(Android.Graphics.Color.Transparent);
}
}
Ответ №1:
Вы могли бы установить AutoSize
свойство вместо SetHeight
в renderer.
Пользовательский рендерер:
[assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace Test.Droid
{
public class CustomEditorRenderer : EditorRenderer
{
public CustomEditorRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
if (Control == null)
return;
Control.Background = null;
Control.SetPadding(0, 0, 0, 0);
Control.ShowSoftInputOnFocus = false;
Control.SetTextIsSelectable(true);
}
}
}
Xaml:
<local:CustomEditor AutoSize="TextChanges" Text="I am using Xamarin Forms to render an Editor that allows for multi-line text. However, when I long press in the Editor box when it already has more than 1 line of text, the menu is not showing up to select/cut/copy the text. How do I enable this menu? It works if it's a single line of text. I have already set this to true, so it should work but doesn't work."></local:CustomEditor>
Вы могли бы проверить вывод.
https://imgur.com/KcNtFH4
Обновлено:
Я не делаю никаких изменений для средства визуализации. Он может отображать меню Копировать / вставить / выбрать в редакторе MaterialEditorRenderer.
[assembly: ExportRenderer(typeof(CustomMaterialEditor),
typeof(CustomMaterialEditorRenderer))]
namespace Test3.Droid
{
public class CustomMaterialEditorRenderer : MaterialEditorRenderer
{
public CustomMaterialEditorRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
if (Control == null)
return;
Control.Background = null;
Control.SetPadding(0, 0, 0, 0);
//Control.DispatchSetSelected(true);
//Control.ShowSoftInputOnFocus = false;
//Control.SetTextIsSelectable(true);
}
}
}
Xaml:
<local:CustomMaterialEditor
AutoSize="TextChanges"
BackgroundColor="LightGray"
Text="I am using Xamarin Forms to render an Editor that allows for multi-line text. However, when I long press in the Editor box when it already has more than 1 line of text, the menu is not showing up to select/cut/copy the text. How do I enable this menu? It works if it's a single line of text. I have already set this to true, so it should work but doesn't work." />
Комментарии:
1. Спасибо за помощь, но это не сработало. Я использую MaterialEditorRenderer, а не EditorRenderer. Мне также нужно установить высоту таким образом.
2. Есть ли у вас какие-либо особые функции
MaterialEditorRenderer
? Если нет, вы можете попробовать использоватьEditorRenderer
.3. Да, у MaterialEditorRenderer есть специальные функции, которые я хочу использовать, а не EditorRenderer. Спасибо
4. Я бы проверил
MaterialEditorRenderer
и обратную связь как можно скорее.5. @user1179083 Я обновил свой ответ. Я не делаю никаких изменений для редактора в renderer. Меню Копировать / Вставить / Выбрать все еще отображается. Я что-то упустил?