android - ScrollView 全滚动时 EditText 失去焦点

标签 android android-edittext focus android-scrollview

我有聊天 View ,有 ScrollView ,包含 TextView ,并在 ScrollView 上方编辑文本。当新消息打印到 textview 时, ScrollView fullscrolling 到结束。

activity.scrollView.post(new Runnable() {
            @Override
            public void run() {
                activity.scrollView.fullScroll(ScrollView.FOCUS_DOWN);
            }
        });

但是如果我在 EditText 中键入文本,它总是向下滚动并失去编辑文本的焦点(因此如果消息经常打印,则键入消息是不真实的)。我该如何解决?我在堆栈中找到了一些答案,但对我没有帮助。这是它。

    editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean hasFocus) {
            if (hasFocus) {
                scrollView.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        scrollView.fullScroll(ScrollView.FOCUS_DOWN);
                    }
                }, 200);
            } else {
            }
        }
    });

UPD:我的 TextView 是 ScrollView 的 subview ,具有属性

textView.setTextIsSelectable(true);

我删除了那个属性,现在没问题了,我可以输入消息并且自动滚动不会阻止我。但它仍然质疑为什么会这样。此外,我仍然希望能够选择(复制)文本。

最佳答案

您可以在滚动事件后添加焦点请求。您可能需要将其包装在可运行的文件中以等待滚动完成,如下所示:

scrollView.fullScroll(ScrollView.FOCUS_DOWN);
scrollView.post(new Runnable() {
    @Override
    public void run() {
        editText.requestFocus();
    }
});

参见 this post了解更多信息。

关于android - ScrollView 全滚动时 EditText 失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40223102/

相关文章:

EditText 上的android random NullPointerException

android - 移动编辑文本以及软键盘android

Firefox 中的 JavaScript onchange、onblur 和焦点异常

javascript - html - 如何使文件列表仅在单击列表上的其他文件时失去焦点

jquery - 申请:first to multiple selectors

android - 从 sencha touch 2.0 应用程序将数据发送到服务器的最佳方式?

android - 如何在 IntelliJ IDEA 中调试 Android Gradle 项目的特定构建变体?

java - 安卓选择器

java - android 不压缩保存位图

android - 如何在更改 EditText 文本时更改 TextView 文本?