EditText 在 NestedScrollView 中不可滚动

布局:我在 NestedScrollView 中有一个 EditText 和 2 个 RecyclerViews,它们不可见(visibility=gone)

问题:当我输入的文本超过屏幕高度时,EditText 会向下滚动到光标所在的位置。但是当我尝试向上滚动时,什么也没有发生。这是我制作的屏幕录像。

无法滚动:

  • 第一次输入/粘贴长文本后。

可以滚动:

  • 重新打开已输入文本的活动后

  • 关闭键盘后

  • 关闭键盘并再次打开后

搜索类似问题产生:

...

editText.setOnTouchListener(new OnTouchListener() {

    @Override

    public boolean onTouch(View v, MotionEvent event) {

        if (v.getId() == R.id.editText) {

            v.getParent().requestDisallowInterceptTouchEvent(true);

            switch (event.getAction() & MotionEvent.ACTION_MASK) {

            case MotionEvent.ACTION_UP:

                v.getParent().requestDisallowInterceptTouchEvent(false);

                break;

            }

        }

        return false;

    }

});

该解决方案不起作用:

  1. 问题是关于 ScrollViews,而不是 NestedScrollViews。NestedScrollView 是建议的解决方案之一(我已经在使用)

  2. 当我添加上面的代码时,EditText 有点可滚动,但只有在显示键盘时才会滚动。如果不是,则无法滚动 - 尝试滚动会导致选择文本。

  3. 滚动(键盘打开)移动光标。

如果您需要更多信息或者我遗漏了什么,请告诉我。谢谢!


素胚勾勒不出你
浏览 147回答 2
2回答

慕尼黑5688855

答案其实比我想象的要简单。粘贴您的 xml 后(并对其进行必要的更改以构建 - 缺少维度等...)我只是更改了您的高度,EditText错误wrap_content消失了。答案就在这里:比较EditText在不同时间点的测量值,左边height=match_parent和右边height=wrap_content左侧:EditText在屏幕上以一定大小绘制空白,您粘贴文本,它的大小不会改变。显示/隐藏键盘是屏幕生命周期中的一个重要事件,它称为配置更改,这会导致元素被再次测量并重新绘制。右边:如果你改变 to 的高度,EditText它wrap_content会强制测量并在插入后立即重新绘制

MMTTMM

将活动设置为,android:windowSoftInputMode="adjustResize"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java