TailTruncation - 在 Xamarin Forms 中省略选取器控件的文本

TailTruncation - Ellipsize the text of a picker control in Xamarin Forms

是否可以在选取器控件中使用省略号截断长文本。我已经创建了一个自定义渲染器来设置字体大小和无边框以获得以下结果。

也尝试设置 Control.Ellipsize = TextUtils.TruncateAt.End; 但没有任何反应

[assembly: ExportRenderer(typeof(NoBorderPicker), typeof(CustomPicker))]
namespace Prj.Droid.Renderers
{
    public class CustomPicker : PickerRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {

                var customBG = new GradientDrawable();
                customBG.SetColor(Android.Graphics.Color.Transparent);
                customBG.SetCornerRadius(3);
                Control.SetBackground(customBG);

                Control.Ellipsize = TextUtils.TruncateAt.End;

                var custdatepicker = (NoBorderPicker) this.Element;
                this.Control.TextSize = (float)custdatepicker.FontSize;

            }
        }
    }
}

现在,我可以确定 Control.SetSingleLine(true); 会起作用。

如果您使用的是自定义渲染器,则可能是不正确的继承。

使用 Xamarin.Forms.Platform.Android.AppCompat.PickerRenderer 而不是 Xamarin.Forms.Platform.Android.PickerRenderer

感谢https://www.damirscorner.com/blog/posts/20201204-CustomPickerRendererOnAndroid.html

奇怪的是,对于我来说,在最新的 Xamarin Forms 中,Android 上的 Picker 会自动截断文本,但在 iOS 上,选择器变得任意宽,覆盖了其他 UI个元素。

解决方法是设置 MinimumWidthRequest = 1,由于某些原因 re-enables 文本截断。我不知道为什么。欢迎来到 Xamarin。