【问题标题】:Android: Keyboard dismissal results in scrolling to the bottomAndroid:键盘关闭导致滚动到底部
【发布时间】:2017-05-10 14:21:53
【问题描述】:

我正在使用 ViewPager 将两个片段显示为我的应用程序中的页面。在第 1 页中,有 EditText 字段。当我滚动到 Page2(或选择 Tab2)时,我想以编程方式关闭与任何这些文本字段(在第 1 页中)关联的键盘。我为此编写了以下代码:

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {


        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            View currentView = getCurrentFocus();
            if (currentView != null) {

                InputMethodManager imm = (InputMethodManager)  currentView.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(currentView.getWindowToken(), 0);
            }

        } });

如果键盘在页面 1 中可见,点击第二个选项卡将导致页面 2 显示为“向下滚动”状态。这使工具栏上升,在状态栏上方使工具栏标题几乎看不到阅读。请查看下面的截图(第一张图片是第1页,第二张是第2页):

如何解决这个问题?

【问题讨论】:

    标签: android android-softkeyboard android-toolbar android-appbarlayout


    【解决方案1】:

    试试这个吧

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                @Override
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    switch ((actionId))
                    {
                        case EditorInfo.IME_NULL:break;
                    }
                    return false;
                }
            });

    并致电editText.onEditorAction(EditorInfo.IME_NULL);

    【讨论】:

    • 对不起。问题不在于键盘没有关闭。我可以使用已在问题中发布的代码关闭键盘。问题是我提到的滚动行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多