繁体   English   中英

如果滑动到ViewPager中的另一个片段,则从AutoCompleteTextView移除焦点

[英]Remove focus from AutoCompleteTextView if swiped to another Fragment in the ViewPager

我在ViewPager片段中遇到了AutoCompleteTextView的问题。 AutoCompleteTextView数据是动态加载的,并且可以正常工作,但是如果以足够快的速度滑动到另一个片段(ViewPager中的另一个页面),那么在加载数据之前,您会获得同时显示在Fragment中的AutoCompleteTextView下拉列表。 在我的示例中,我在ViewPager中有3个片段,其中第三个片段包含AutoCompleteTextView,如果快速滑动到第二个片段,有时会在第二个页面上出现下拉菜单,但是如果滑动到第一个页面,则可以正常工作,因为在这种情况下,第三个片段被释放(默认情况下,setOffscreenPageLimit为1,因此为了获得更好的UX,内存中始终有一个片段)。 有人遇到过同样的问题吗?

我想出了一种解决方案,不确定对其他ViewPager片段上具有AutoCompleteTextView或EditText的用户是否可以使用。 但是无论如何我都是这样的:

在保存viewPager的MainActivity中,我添加了clearFocus:

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            if (position == 0 || position == 1) {
                if (getCurrentFocus() != null) {
                    getCurrentFocus().clearFocus();
                }
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            if (state == ViewPager.SCROLL_STATE_IDLE) {
                hideKeyboard();
            }
        }
    });

在第三个片段中,我在AutoCompleteTextView上添加了requestFocus,当打开该页面时需要重点关注:

mAutoCompleteTextView.requestFocus();

希望对别人有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM