如何在 android 中为 mvvmcross 使用 OnFocousChange
How to use OnFocousChange for mvvmcross in android
我正在尝试在 xamarin 中为 editText
检测 OnFocousChange
以关闭外部编辑文本的键盘时钟
edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard(v);
}
}
});
由于 setOnFocusChangeListener
在 xamarin 中不可用,我尝试使用
staticTextFragrance.FocusChange += (object sender, View.FocusChangeEventArgs e) => {
hideKeyboard();
};
它不工作,如何解决这个问题!!
我建议使用 android 输入管理器来检测何时处理文本编辑框以外的任何地方的点击,并相应地关闭键盘。您肯定不想为每个需要输入的控件处理非焦点事件。因此,更全局的方法是标准模式。
这是一个粗略的例子:
private EditText tbUsername;
private EditText tbPassword;
private InputMethodManager imm;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SupportActionBar.Title = "Login";
FindViewById<Button>(Resource.Id.btnLogin).Click += LoginActivity_Click;
tbUsername= FindViewById<EditText>(Resource.Id.tbUsername);
tbPassword = FindViewById<EditText>(Resource.Id.tbPassword);
imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
}
private async void LoginActivity_Click(object sender, System.EventArgs e)
{
imm.HideSoftInputFromWindow(tbUsername.WindowToken, 0);
imm.HideSoftInputFromWindow(tbPassword.WindowToken, 0);
}
Xamarin 开发人员指南可在此 Link.
找到
这也可以通过以下方式完成:
public override bool DispatchTouchEvent(MotionEvent ev)
{
hideKeyboard();
return base.DispatchTouchEvent(ev);
}
public void hideKeyboard()
{
InputMethodManager inputManager = (InputMethodManager)GetSystemService(Context.InputMethodService);
var currentFocus = CurrentFocus;
if (currentFocus != null)
{
inputManager.HideSoftInputFromWindow(currentFocus.WindowToken, HideSoftInputFlags.None);
}
}
我正在尝试在 xamarin 中为 editText
检测 OnFocousChange
以关闭外部编辑文本的键盘时钟
edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard(v);
}
}
});
由于 setOnFocusChangeListener
在 xamarin 中不可用,我尝试使用
staticTextFragrance.FocusChange += (object sender, View.FocusChangeEventArgs e) => {
hideKeyboard();
};
它不工作,如何解决这个问题!!
我建议使用 android 输入管理器来检测何时处理文本编辑框以外的任何地方的点击,并相应地关闭键盘。您肯定不想为每个需要输入的控件处理非焦点事件。因此,更全局的方法是标准模式。
这是一个粗略的例子:
private EditText tbUsername;
private EditText tbPassword;
private InputMethodManager imm;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SupportActionBar.Title = "Login";
FindViewById<Button>(Resource.Id.btnLogin).Click += LoginActivity_Click;
tbUsername= FindViewById<EditText>(Resource.Id.tbUsername);
tbPassword = FindViewById<EditText>(Resource.Id.tbPassword);
imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
}
private async void LoginActivity_Click(object sender, System.EventArgs e)
{
imm.HideSoftInputFromWindow(tbUsername.WindowToken, 0);
imm.HideSoftInputFromWindow(tbPassword.WindowToken, 0);
}
Xamarin 开发人员指南可在此 Link.
找到这也可以通过以下方式完成:
public override bool DispatchTouchEvent(MotionEvent ev)
{
hideKeyboard();
return base.DispatchTouchEvent(ev);
}
public void hideKeyboard()
{
InputMethodManager inputManager = (InputMethodManager)GetSystemService(Context.InputMethodService);
var currentFocus = CurrentFocus;
if (currentFocus != null)
{
inputManager.HideSoftInputFromWindow(currentFocus.WindowToken, HideSoftInputFlags.None);
}
}