xamarin 禁用选取器文本输入

nzkunb0c  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(189)

在我的页面上,我使用的选取器将ItemSource绑定到3个可选项。当我从列表中选择某项或取消它时,焦点停留在选取器上,并允许我键入某些内容。虽然这不会影响所选的值,但可能会使用户感到困惑。有没有简单的方法可以阻止用户在此字段中输入数据?

piztneat

piztneat1#

解决方案(或替代方法)是使用自定义渲染器禁用焦点:

internal class CustomPicker : PickerRenderer
{
    public CustomPicker(Context context) : base(context)
    {
    }

    protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
    {
        base.OnElementChanged(e);
        EditText?.SetFocusable(ViewFocusability.NotFocusable);
    }
}
2exbekwf

2exbekwf2#

我已经做了一个样本测试,如果用户点击物理键盘,选择器的文本将被更改,但软键盘不会显示。
如果你不想让选择器接受用户的输入,你可以像Cfun说的那样使用custom render,你可以只把Focusable属性设置为false,这样选择器就不会接受来自键盘的输入。

public class MyPickerRender : PickerRenderer
{
    public MyPickerRender(Context context) : base(context)
    {
    }
    protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Picker> e)
    {
        base.OnElementChanged(e);
        Control.Focusable = false;
    }
}

相关问题