我有一个聊天视图,其中包含一个滚动视图和一些文本视图,在滚动视图之上还有一个编辑框。当新消息打印到文本视图中时,滚动视图会自动滚动到底部。
activity.scrollView.post(new Runnable() {
@Override
public void run() {
activity.scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
});
但是当我在EditText中输入文本时,它总是向下滚动并失去焦点(如果消息经常打印,那么输入消息就不真实)。 我该如何解决这个问题?我在Stack中找到了一些答案,但它并没有帮助我。以下是答案。
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 {
}
}
});
更新:我的文本视图(TextView)是滚动视图(ScrollView)的子元素,具有以下属性:
textView.setTextIsSelectable(true);
我移除了那个属性,现在一切正常,我可以输入消息而且自动滚动不会阻止我。但是我仍然想知道为什么会发生这种情况。另外,我仍然希望能够选择(复制)文本的功能。