为什么在 Xamarin.forms 的自定义渲染器中将 ImeOptions 设置为 Next 不会将我带到 Android 中的下一个字段

Why is Setting ImeOptions to Next in custom renderer of Xamarin.forms not taking me to next field in Android

我在 Xamarin.Forms 的应用程序中有一个包含几个字段的表单。我需要在 android 软键盘上提供文本 "Next" 然后点击 "Next" 它应该会带我到下一个字段。

我在 customRenderer 中的代码:

Control.ImeOptions = Android.Views.InputMethods.ImeAction.Next;
Control.SetImeActionLabel("Next",Android.Views.InputMethods.ImeAction.Next);

这会将键盘上的文本设置为 "Next",但不会将我带到下一个字段。

我还尝试在 xaml.cs 的 OnAppearing() 中编写一些代码:

entryOne.Completed+= (object sender, EventArgs e) =>
   {entryTwo.Focus(); };

即使这样也行不通。

另外,下面的代码声称在 android 软键盘按钮上显示 "Whatever",但它显示的是 ImeAction 的枚举值,在下面的例子中是 "Next":

Control.SetImeActionLabel("Whatever",Android.Views.InputMethods.ImeAction.Next);

Xamarin.FormsEntry提供了这个功能,你可以用属性ReturnType设置键盘,ReturnCommand写代码,你想输入哪个入口专注于点击那个。

在你的xaml中:

    <Entry   x:Name="txtUserName"
             ReturnCommand="{Binding loginCompleted}"
             ReturnType="Next"/>
    <Entry   x:Name="txtPassword"/>

在您的视图模型中:

      public ICommand loginCompleted
        {
            get { return new Command(loginCompletedEvent); }
        }

        /// <summary>
        /// Event for making the keyboard focus on password Entry
        /// </summary>
        private void loginCompletedEvent()
        {
            Entry entryPassword = m_view.FindByName<Entry>("txtPassword");
            entryPassword.Focus();
        }

希望这能解决您的问题。