Mit Hilfe dieses Beitrags: https://forums.xamarin.com/discussion/80360/editor-inside-scrollview-not-scrolling
, dass das Scrollen auf Android (iOS arbeitet standardmäßig) festgelegt. Es vermeidet das Parent-Scroll-Ereignis beim Berühren des Editors und löst nur den Editor-Scroll aus.
Zuerst wird eine Klasse auf Android-Projekt:
using Android.Views;
namespace MyApp.Droid
{
public class DroidTouchListener : Java.Lang.Object, View.IOnTouchListener
{
public bool OnTouch(View v, MotionEvent e)
{
v.Parent?.RequestDisallowInterceptTouchEvent(true);
if ((e.Action & MotionEventActions.Up) != 0 && (e.ActionMasked & MotionEventActions.Up) != 0)
{
v.Parent?.RequestDisallowInterceptTouchEvent(false);
}
return false;
}
}
}
und dann verwenden, auf dem Android Individuelle EditorRenderer:
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
var nativeEditText = (global::Android.Widget.EditText)Control;
//While scrolling inside Editor stop scrolling parent view.
nativeEditText.OverScrollMode = OverScrollMode.Always;
nativeEditText.ScrollBarStyle = ScrollbarStyles.InsideInset;
nativeEditText.SetOnTouchListener(new DroidTouchListener());
//For Scrolling in Editor innner area
Control.VerticalScrollBarEnabled = true;
Control.MovementMethod = ScrollingMovementMethod.Instance;
Control.ScrollBarStyle = Android.Views.ScrollbarStyles.InsideInset;
//Force scrollbars to be displayed
Android.Content.Res.TypedArray a = Control.Context.Theme.ObtainStyledAttributes(new int[0]);
InitializeScrollbars(a);
a.Recycle();
}
}
Und Sie müssen exportieren Sie Ihre Renderer [assembly: ExportRenderer (typeof (Herausgeber) , typeof (CustomEditorRenderer))] https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/entry/ – shalin