Решение Лео великолепно, но, на мой взгляд, это чрезмерное использование CustomRenderers. Это не то, для чего вы используете CustomRenderer.
Эффект более чем достаточен для достижения того, что вы хотите, и его можно использовать для других типов.
Создайте файл NoHorizontScrollbarEffect.cs в вашем общем доступеproject:
namespace YourAppName.Effects
{
public class NoHorizontalScrollbarEffect : RoutingEffect
{
public NoHorizontalScrollbarEffect() : base($"MyApp.{nameof(NoHorizontalScrollbarEffect)}")
{
}
}
}
Обратите внимание, что «MyApp» выше и ниже должны совпадать, но это может быть любой текст.
Теперь добавьте NoHor HorizontalScrollbarEffect_Android.cs в соответствующий платформенно-зависимый проект:
[assembly: ResolutionGroupName("MyApp")]
[assembly: ExportEffect(typeof(NoHorizontalScrollbarEffect), nameof(NoHorizontalScrollbarEffect))]
namespace YourAppName.Android.Effects
{
public class NoHorizontalScrollbarEffect : PlatformEffect
{
protected override void OnAttached()
{
Android.Views.View view = this.Control ?? this.Container //Control is null for Layouts
view.HorizontalScrollBarEnabled = false;
}
protected override void OnDetached()
{
}
}
}
И затем вы можете использовать этот эффект на любом элементе XAML, производном от View (включая Entry) после добавления xmlns:effects="clr-namespace:YourAppName.Effects"
(пространство имен класса Effect общего проекта) в верхней части страницы:
...
<AnyControl ...>
...
<AnyControl.Effects>
<effects:NoHorizontalScrollbarEffect />
</AnyControl.Effects>
</AnyControl>
...