ListView – Быстрая полоса прокрутки, которая не отображается в первый раз в 4.4 Kitkat

У меня есть один просмотр списка с включенной быстрой прокруткой. В первый раз панель быстрого прокрутки не видна. Но если я перейду к другому экрану и вернусь к этому, тогда он станет видимым. Эта проблема наблюдается с последней версией ОС Android. Т.е. на 4.4 – Киткат

Первый вид

Введите описание изображения здесь

Второй визит

Введите описание изображения здесь

Любая идея о том, почему так происходит?

У меня такая же проблема. Я использую решение:

gridView.setFastScrollEnabled(true); if (Build.VERSION.SDK_INT >= 19) { gridView.setOnScrollListener(new OnScrollListener() { private static final int DELAY = 2000; private AbsListView view; @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState != SCROLL_STATE_IDLE) { view.setFastScrollAlwaysVisible(true); handler.removeCallbacks(runnable); } else { this.view = view; handler.postDelayed(runnable, DELAY); } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } private Handler handler = new Handler(); private Runnable runnable = new Runnable() { @Override public void run() { view.setFastScrollAlwaysVisible(false); view = null; } }; }); } 

Что для меня работало, это отложить вызов setFastScrollEnabled() .

 if (Build.VERSION.SDK_INT >= 19) { mListView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @SuppressWarnings("deprecation") @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public void onGlobalLayout() { mListView.setFastScrollEnabled(true); if (Build.VERSION.SDK_INT >= 16) { mListView.getViewTreeObserver().removeOnGlobalLayoutListener(this); } else { mListView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } } }); } else { mListView.setFastScrollEnabled(true); } 

Это проблема с информацией ( здесь и здесь ).

Вот обходной путь:

  public static void setFastScrolledEnabled(final AdapterView<?> adapterView,final boolean enable) { final GridView gridView; final ListView listView; if(adapterView instanceof GridView) { gridView=(GridView)adapterView; listView=null; } else if(adapterView instanceof ListView) { listView=(ListView)adapterView; gridView=null; } else throw new UnsupportedOperationException("setFastScrolledEnabled is only available for gridView/listView"); if(Build.VERSION.SDK_INT==VERSION_CODES.KITKAT) adapterView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public void onGlobalLayout() { if(gridView!=null) gridView.setFastScrollEnabled(enable); else if(listView!=null) listView.setFastScrollEnabled(enable); adapterView.getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); else if(gridView!=null) gridView.setFastScrollEnabled(enable); else if(listView!=null) listView.setFastScrollEnabled(enable); }