我有一个Xamarin.Android应用程序并遇到一个问题,即EditText字段上的事件未在我的设备上触发。他们在模拟器上工作,但不是我的Nexus 5X。有什么想法?
布局
<EditText
android:id="@+id/usernameTextField"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/LoginTheme.EditText"
android:background="@android:color/transparent"
android:hint="user name"
android:lines="1"
android:maxLines="1"
app:layout_constraintTop_toBottomOf="@id/topBorder"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintWidth_max="350dp" />
代码
UsernameTextField = FindViewById<EditText> (Resource.Id.usernameTextField);
PasswordTextField = FindViewById<EditText> (Resource.Id.passwordTextField);
UsernameTextField.KeyPress += (sender, e) => {
if (e.KeyCode == Keycode.Enter && e.Event.Action == KeyEventActions.Down) {
this.PasswordTextField.RequestFocus();
}
};
UsernameTextField.KeyPress += (sender, e) => {
if (e.KeyCode == Keycode.Enter && e.Event.Action == KeyEventActions.Down) {
this.PasswordTextField.RequestFocus();
}
};
PasswordTextField.KeyPress += (sender, e) => {
if (e.KeyCode == Keycode.Enter && e.Event.Action == KeyEventActions.Down) {
this.DoLogin ();
}
};
我也尝试过使用这样的IME动作。
UsernameTextField.EditorAction += HandleEditorAction;
PasswordTextField.EditorAction += HandleEditorAction;
private void HandleEditorAction(object sender, TextView.EditorActionEventArgs e) {
e.Handled = false;
if (e.ActionId == ImeAction.Send) {
}
}
似乎没什么用。当我按下虚拟键盘上的enter按钮时,它只在EditText字段中创建一个新行。有什么想法吗?
答案 0 :(得分:2)
照片发布五分钟后,我发现了解决方案。无论出于何种原因,向EditText添加和inputType似乎可以解决问题并且KeyPress事件现在正在工作。也许这是Xamarin中的一个错误?