android - 停止 ScrollView 自动滚动到 EditText

标签 android android-edittext scrollview autoscroll

似乎是一个常见问题,但我没有找到很好的解决方案。目标是停止 ScrollView从自动滚动到 EditText (或任何与此相关的观点)。

您在 Button 中有一堆 View (TextView s、ScrollView s 等​​) ,其中之一是 EditText .单击 ScrollView 中的按钮后, ScrollView向下滚动到 EditText (它的屏幕外)。这是不希望的,因为您不希望将其他元素滚动到屏幕之外。

现在我可以通过在 ScrollView 中添加其他可聚焦元素来阻止屏幕首次显示时发生这种情况。 .但是,普遍的问题仍然存在。用户手动向下滚动到 EditText ,输入一些数字,然后向上滚动到顶部(EditText 现在关闭屏幕),他们单击 ScrollView 中的按钮, 你猜怎么着? ScrollView向下滚动到该死的 EditText .

我正在考虑扩展 ScrollView并覆盖那里的一些方法,如 findFocusableViewInBounds ,但我有一种感觉,我只会让自己陷入更多麻烦。

如果可以,请提供帮助。

我玩过诸如高度为 0 的事情 EditText在我的 ScrollView 顶部,将 Next Focusable 元素属性添加到 ScrollView 中的其他项目等。我想一个“黑客”可能是获得 EditText当虚拟或手动键盘被隐藏或其他东西时失去焦点。

最佳答案

在解决这个问题很长一段时间后,我找到了一个似乎可行而又不会太难看的解决方案。首先,确保 ViewGroup(直接)包含您的 EditTextdescendantFocusability 设置为“Before Descendants”,focusable 设置为“true”并且 focusableInTouchMode 设置为“true”。这将不是 ScrollView 本身,而是您拥有各种 View 的内部布局。接下来添加一个 onTouchListener 到您的 ScrollView 中,当它被触摸时,它会从 EditText 中移除焦点,如下所示:

ScrollView scroll = (ScrollView)findViewById(R.id.scrollView1);
scroll.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (myEditText.hasFocus()) {
            myEditText.clearFocus();
        }
        return false;
    }
});

如果这不能解决问题,请告诉我。应该发生的是布局而不是 EditText 获得焦点,因此不应发生滚动。

关于android - 停止 ScrollView 自动滚动到 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6176391/

相关文章:

java - 在 QuickBlox 中接受 Android 和 iOS 之间的调用

android - 如何不重叠 EditText 中按钮上的文本?

java - 如何动态获取edittext的值?

android - 在 ScrollView 中滚动 Webview

ios - iOS 中 View 外内容的 Nativescript 布局不正确

android: scrollView 中的 ListView 不起作用?

android - 如何在 Android 中使用下载管理器将文件保存在 SD 卡上?

android - 如何检测是否安装了 Google Play? (非市场)

java - 如何在暂停主执行而不是 UI 的同时解析 xml 文件

android - 如何从 EditText 正确触发 datePicker 和验证?