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

时间:2019-04-08 06:01:12

标签: android xamarin.forms next imeoptions

我在Xamarin.Forms中的应用程序中有一个包含一些字段的表单。我需要在android软键盘上提供文本“ Next” 然后点击“下一步”,我应该转到下一个字段。

customRenderer中的我的代码:

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

这会将小键盘上的文本设置为“下一步”,但不会带我进入下一个字段。

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

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

即使这样也不起作用。

下面的代码也声称在android软键盘按钮上显示“ Whatever”,但它显示了ImeAction的枚举值,在以下情况下为“ Next”:

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

1 个答案:

答案 0 :(得分:1)

Xamarin.Forms Entry提供了此功能,您可以使用属性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();
        }

希望这可以解决您的问题。