Android 滚动查看完整滚动时EditText失去焦点

Android 滚动查看完整滚动时EditText失去焦点,android,android-edittext,focus,android-scrollview,Android,Android Edittext,Focus,Android Scrollview,我有聊天视图,有滚动视图,包含文本视图,并在滚动视图上方编辑文本。当新消息打印到文本视图时,滚动查看完整滚动至结束 activity.scrollView.post(new Runnable() { @Override public void run() { activity.scrollView.fullScroll(ScrollView.FOCUS_DOWN); } });

我有聊天视图,有滚动视图,包含文本视图,并在滚动视图上方编辑文本。当新消息打印到文本视图时,滚动查看完整滚动至结束

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:MyTextView是scrollview的子级,具有属性

textView.setTextIsSelectable(true);

我删除了那个属性,现在一切正常了,我可以输入消息,自动滚动并不会阻止我。但它仍然质疑为什么会发生这种情况。此外,我仍然希望能够选择(复制)文本。

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

scrollView.fullScroll(ScrollView.FOCUS_DOWN);
scrollView.post(new Runnable() {
    @Override
    public void run() {
        editText.requestFocus();
    }
});
有关更多信息,请参阅