int myLastVisiblePos;// global variable of activity //save first value when you create GridView GridView gridView = (GridView) gv.findViewById(R.id.grid_view); myLastVisiblePos = gridView.getFirstVisiblePosition(); gridView.setOnScrollListener( new OnScrollListener() { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { int currentFirstVisPos = view.getFirstVisiblePosition(); if(currentFirstVisPos > myLastVisiblePos) { //scroll down } if(currentFirstVisPos < myLastVisiblePos) { //scroll up } myLastVisiblePos = currentFirstVisPos; } });
public static boolean canScrollUp(@NonNull View targetView) { if (android.os.Build.VERSION.SDK_INT < 14) { if (targetView instanceof AbsListView) { final ViewGroup viewGroup = (ViewGroup) targetView; final AbsListView absListView = (AbsListView) targetView; return viewGroup.getChildCount() > 0 && (absListView.getFirstVisiblePosition() > 0 || viewGroup.getChildAt(0).getTop() < targetView.getPaddingTop()); } else { return targetView.getScrollY() > 0; } } else { return targetView.canScrollVertically(-1); } }
public static boolean canScrollLeft(@NonNull View targetView) { if (android.os.Build.VERSION.SDK_INT < 14) { if (targetView instanceof AbsListView) { final ViewGroup viewGroup = (ViewGroup) targetView; final AbsListView absListView = (AbsListView) targetView; return viewGroup.getChildCount() > 0 && (absListView.getFirstVisiblePosition() > 0 || viewGroup.getChildAt(0).getTop() < targetView.getPaddingTop()); } else { return targetView.getScrollY() > 0; } } else { return targetView.canScrollHorizontally(-1); } }
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case OnScrollListener.SCROLL_STATE_IDLE: if (scrolling){ // get first visible item View itemView = view.getChildAt(0); int top = Math.abs(itemView.getTop()); // top is a negative value int bottom = Math.abs(itemView.getBottom()); if (top >= bottom){ ((ListView)view).setSelectionFromTop(view.getFirstVisiblePosition()+1, 0); } else { ((ListView)view).setSelectionFromTop(view.getFirstVisiblePosition(), 0); } } scrolling = false; break; case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: case OnScrollListener.SCROLL_STATE_FLING: Log.i("TEST", "SCROLLING"); scrolling = true; break; } }
int firstVisiblePosition = lv.getFirstVisiblePosition(); int scrollY = -(c.getTop()); sListViewItemHeights.put(lv.getFirstVisiblePosition(), c.getHeight());
public static void scrollListBy(@NonNull AbsListView listView, int y) { if (Build.VERSION.SDK_INT >= 19) { // Call the framework version directly listView.scrollListBy(y); } else if (listView instanceof ListView) { // provide backport on earlier versions final int firstPosition = listView.getFirstVisiblePosition(); if (firstPosition == ListView.INVALID_POSITION) { return; } //noinspection UnnecessaryLocalVariable final ViewGroup listGroup = listView; final View firstView = listGroup.getChildAt(0); if (firstView == null) { return; } final int newTop = firstView.getTop() - y; ((ListView) listView).setSelectionFromTop(firstPosition, newTop); } else { listView.smoothScrollBy(y, 0); } }
public boolean canScrollListUp() { // Ported from AbsListView#canScrollList() which isn't compatible to all API levels final int firstTop = mView.getChildAt(0).getTop(); final int firstPosition = mView.getFirstVisiblePosition(); return firstPosition > 0 || firstTop < mView.getListPaddingTop(); }
public boolean canScrollUp(View view) { if (android.os.Build.VERSION.SDK_INT < 14) { if (view instanceof AbsListView) { final AbsListView absListView = (AbsListView) view; return absListView.getChildCount() > 0 && (absListView.getFirstVisiblePosition() > 0 || absListView .getChildAt(0).getTop() < absListView.getPaddingTop()); } else { return view.getScrollY() > 0; } } else { return ViewCompat.canScrollVertically(view, -1); } }
/** * 判断目标View是否滑动到顶部-还能否继续滑动 * * @return */ public boolean isChildScrollToTop() { if (Build.VERSION.SDK_INT < 14) { if (mTarget instanceof AbsListView) { final AbsListView absListView = (AbsListView) mTarget; return !(absListView.getChildCount() > 0 && (absListView .getFirstVisiblePosition() > 0 || absListView .getChildAt(0).getTop() < absListView.getPaddingTop())); } else { return !(mTarget.getScrollY() > 0); } } else { return !ViewCompat.canScrollVertically(mTarget, -1); } }
@Override public void onScrollStateChanged(AbsListView listView, int scrollState) { // TODO: Try change to RecyclerView as currently gets stuck a lot when using scrollbar on right of ListView // Start rendering the question & answer every time the user stops scrolling if (scrollState == SCROLL_STATE_IDLE) { int startIdx = listView.getFirstVisiblePosition(); int numVisible = listView.getLastVisiblePosition() - startIdx; DeckTask.launchDeckTask(DeckTask.TASK_TYPE_RENDER_BROWSER_QA, mRenderQAHandler, new DeckTask.TaskData(new Object[]{getCards(), startIdx - 5, 2 * numVisible + 5})); } } }
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { SimpleMonthView child = (SimpleMonthView) view.getChildAt(0); if (child == null) { return; } // Figure out where we are long currScroll = view.getFirstVisiblePosition() * child.getHeight() - child.getBottom(); mPreviousScrollPosition = currScroll; mPreviousScrollState = mCurrentScrollState; }
/** * @return Whether it is possible for the child view of this layout to * scroll up. Override this if the child view is a custom view. */ public boolean canChildScrollUp() { // //For make it can work when my recycler view is in Gone. // return false; if (android.os.Build.VERSION.SDK_INT < 14) { if (mTarget instanceof AbsListView) { final AbsListView absListView = (AbsListView) mTarget; return absListView.getChildCount() > 0 && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0) .getTop() < absListView.getPaddingTop()); } else { return ViewCompat.canScrollVertically(mTarget, -1) || mTarget.getScrollY() > 0; } } else { return ViewCompat.canScrollVertically(mTarget, -1); } }
/** * Updates the title and selected month if the view has moved to a new * month. */ @Override public void onScroll( AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { MonthView child = (MonthView) view.getChildAt(0); if (child == null) { return; } // Figure out where we are long currScroll = view.getFirstVisiblePosition() * child.getHeight() - child.getBottom(); mPreviousScrollPosition = currScroll; mPreviousScrollState = mCurrentScrollState; }
int first = lv.getFirstVisiblePosition(); int last = lv.getLastVisiblePosition();
public boolean canScrollListDown() { // Ported from AbsListView#canScrollList() which isn't compatible to all API levels final int childCount = mView.getChildCount(); final int itemsCount = mView.getCount(); final int firstPosition = mView.getFirstVisiblePosition(); final int lastPosition = firstPosition + childCount; final int lastBottom = mView.getChildAt(childCount - 1).getBottom(); return lastPosition < itemsCount || lastBottom > mView.getHeight() - mView.getListPaddingBottom(); } }
private boolean canChildScrollUp(View mTarget) { if (mTarget == null) { return false; } if (android.os.Build.VERSION.SDK_INT < 14 && mTarget instanceof AbsListView) { final AbsListView absListView = (AbsListView) mTarget; return absListView.getChildCount() > 0 && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0) .getTop() < absListView.getPaddingTop()); } if (mTarget instanceof ViewGroup) { int childCount = ((ViewGroup) mTarget).getChildCount(); for (int i = 0; i < childCount; i++) { View child = ((ViewGroup) mTarget).getChildAt(i); if (canChildScrollUp(child)) { return true; } } } return ViewCompat.canScrollVertically(mTarget, -1); }
/** * copy from {@link android.support.v4.widget.SwipeRefreshLayout#canChildScrollUp()} * * @return Whether it is possible for the child view of this layout to * scroll up. Override this if the child view is a custom view. */ protected boolean canChildScrollUp() { if (android.os.Build.VERSION.SDK_INT < 14) { if (mTargetView instanceof AbsListView) { final AbsListView absListView = (AbsListView) mTargetView; return absListView.getChildCount() > 0 && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0) .getTop() < absListView.getPaddingTop()); } else { return ViewCompat.canScrollVertically(mTargetView, -1) || mTargetView.getScrollY() > 0; } } else { return ViewCompat.canScrollVertically(mTargetView, -1); } }
/** * @return Whether it is possible for the child view of this layout to * scroll up. Override this if the child view is a custom view. */ public boolean canChildScrollUp() { if (mChildView == null) { return false; } if (Build.VERSION.SDK_INT < 14) { if (mChildView instanceof AbsListView) { final AbsListView absListView = (AbsListView) mChildView; return absListView.getChildCount() > 0 && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0) .getTop() < absListView.getPaddingTop()); } else { return ViewCompat.canScrollVertically(mChildView, -1) || mChildView.getScrollY() > 0; } } else { return ViewCompat.canScrollVertically(mChildView, -1); } }
private void fillByListView(final List<ImageView> originImageList) { AbsListView absListView = transConfig.getListView(); int childCount = absListView.getChildCount(); for (int i = 0; i < childCount; i++) { ImageView originImage = ((ImageView) absListView.getChildAt(i) .findViewById(transConfig.getImageId())); originImageList.add(originImage); } int firstPos = absListView.getFirstVisiblePosition(); int lastPos = absListView.getLastVisiblePosition(); int totalCount = absListView.getCount(); fillPlaceHolder(originImageList, totalCount, firstPos, lastPos); }
int firstVisiblePosition = absListView.getFirstVisiblePosition(); int firstVisiblePosition = absListView.getFirstVisiblePosition();