Android:如何防止任何视图被软键盘隐藏



我的布局中有4行输入字段。
问题是,当我单击最高的EditText时,出现软键盘并隐藏了最低的EditText
我的目标是在弹出软键盘时将每个EditText字段保持在屏幕中。

我在清单中尝试了windowSoftInputMode,但这不是我想要的,它只是保持"集中"输入字段可见。

是否有View类型有任何标志来防止隐藏软键盘,以便屏幕始终滚动以显示指定的视图?

您可以将4行输入字段放入线性层片视图中,然后将此线性延迟放入scrollview中,当出现软键盘时,您将scrollview滚动到最后的Edittext视图位置。

int[] loc = new int[2];
lastEditTextView.getLocationOnScreen(loc);

出现检测键盘的方法:

private ViewTreeObserver.OnGlobalLayoutListener mOnGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        Rect r = new Rect();
        if (activityRootView == null) {
            return;
        }
        activityRootView.getWindowVisibleDisplayFrame(r);
        int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
        if (heightDiff > 100) {
            // keyboard show
            scrollView.smoothScrollTo(loc[0],loc[1]);
        } else {
            // keyboard hidden
        }
    }
};
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(mOnGlobalLayoutListener);

最新更新