簡體   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