我有一个具有一组页面的View Pager。当用户在第一页上时,键盘弹出。当我在页面中滑动时,键盘没有关闭(这是实现方式)。现在当我在第四页或第五页上时,我明确尝试使用以下代码关闭键盘,但是它不起作用。有人告诉我,这是因为键盘是在单独的页面上打开的(按不同的片段)。

InputMethodManager imm = (InputMethodManager)Context.GetSystemService(Activity.InputMethodService);
View v = ((Activity)context).CurrentFocus;
if (v == null)
    return;
imm.HideSoftInputFromWindow(WindowToken, 0);


windowtoken在这里是如何映射的。我猜它是用来关联打开键盘的视图窗口的。但是,不要将寻呼机中的所有页面都显示在同一个窗口中,实质上,它们具有相同的标记。如果是这样,为什么不起作用

最佳答案

我们可以切换输入。在这里使用-

public static void toggle(Activity activity){
    InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
    if (imm.isActive()){
        // Hide keyboard
        imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
    } else {
        // Show keyboard
        imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
}

08-06 08:32