页面焦点滚动回AutoCompleteTextView

时间:2017-06-06 11:46:26

标签: android android-layout

在ScrollView中的布局中有一个自动完成的textView。

mAutoCompleteTextView.addTextChangedListener(new TextValidator(mAutoCompleteTextView) {
        @Override
        public void validate(TextView textView, String text) {
            if(text == null){
                mAutoCompleteTextView.setError(text);
        }
});

如果文本无效,则显示带有下拉错误消息的红色错误图标。当错误可见并且页面滚动时,页面中心返回到此视图而不是向上/向下滚动。

如果错误仍然可见,如何避免这种情况?

2 个答案:

答案 0 :(得分:0)

试试这个.. 这将允许您顺利滚动,如果 setEnabled()不起作用,您还可以使用 clearFocus() requestFocus()

   scrollLayout.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            Rect rect = new Rect();
            mAutoCompleteTextView.setEnabled(false);
            if (mAutoCompleteTextView.getGlobalVisibleRect(rect)
                    && mAutoCompleteTextView.getHeight() == rect.height()
                    && mAutoCompleteTextView.getWidth() == rect.width() && mAutoCompleteTextView.isShown()) {
                mAutoCompleteTextView.setEnabled(true);
            } else {
                mAutoCompleteTextView.setEnabled(false);
            }
        }
    });

希望这有帮助

答案 1 :(得分:0)

在根布局中使用:

android:descendantFocusability="beforeDescendants"

然后在onCreate():

rootLayout.requestFocus();

希望这有帮助。