我有一個啓用快速滾動的列表視圖。第一次,快速滾動條不可見。但是,如果我導航到另一個屏幕並返回到此位置,則會看到它。最新的Android操作系統版本會出現此問題。即,在4.4 - 奇巧ListView - 在4.4 Kitkat中第一次看不到快速滾動條
首先VIST
第二次訪問
上爲什麼發生這樣的任何想法?
我有一個啓用快速滾動的列表視圖。第一次,快速滾動條不可見。但是,如果我導航到另一個屏幕並返回到此位置,則會看到它。最新的Android操作系統版本會出現此問題。即,在4.4 - 奇巧ListView - 在4.4 Kitkat中第一次看不到快速滾動條
首先VIST
第二次訪問
上爲什麼發生這樣的任何想法?
我有同樣的問題。我使用的解決方案:
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);
}
我已經看到了這個問題,也在尋找答案。 – KickingLettuce