Xamarin.Forms Android自定义Entry渲染器开启滚动后不显示滚动条如何解决
问题修复方案
你漏了Android原生EditText(对应Xamarin Editor的原生控件)滚动功能的核心配置,仅开启滚动条显示不生效,按以下步骤修改即可:
需补充的配置项
- 首先要给原生控件设置滚动处理方法,这是Android EditText支持滚动的必要前提:
this.Control.MovementMethod = Android.Text.Method.ScrollingMovementMethod.Instance; - 如果需要滚动条常驻不自动淡出,可添加配置:
this.Control.ScrollbarFadingEnabled = false; - 可选配置:如果觉得滚动条太细不易观察,可指定滚动条宽度:
this.Control.ScrollBarSize = Android.Util.TypedValue.ApplyDimension(Android.Util.ComplexUnitType.Dip, 4, Context.Resources.DisplayMetrics);
修改后的完整OnElementChanged方法代码
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e) { base.OnElementChanged(e); if (this.Control != null) { // 新增:开启滚动支持 this.Control.MovementMethod = Android.Text.Method.ScrollingMovementMethod.Instance; this.Control.VerticalScrollBarEnabled = true; // 新增:关闭滚动条自动隐藏(可选,按需添加) this.Control.ScrollbarFadingEnabled = false; } if (e.OldElement == null) { GradientDrawable gd = new GradientDrawable(); gd.SetCornerRadius(5); gd.SetStroke(2, Constants.AppBlue.ToAndroid()); this.Control.Background = gd; this.Control.ImeOptions = Android.Views.InputMethods.ImeAction.Done; } }
额外注意事项
Xamarin.Forms端使用BorderedEditor时,需要给控件设置固定高度/最大高度,同时关闭自动高度调整,避免内容自适应控件高度导致无滚动场景:
<local:BorderedEditor HeightRequest="120" AutoSize="Disabled" MaxLines="5" ...其他属性 />
内容的提问来源于stack exchange,提问作者Samuel James
相关产品推荐
相关产品推荐

