ListView已到底部和顶部的判断
一、 理解Android坐標(biāo),位置概念
坐標(biāo)系在二維視圖中通過X軸和Y軸兩個數(shù)字為組合表示某個點(diǎn)的絕對坐標(biāo)。 例如(30, 100) 通常表示X軸30, Y軸100交叉的一個點(diǎn)。 在Android中以左上角為原點(diǎn)(0,0),水平方向是X軸,從左到右,垂直方向是Y軸,從上到下,可以把left相當(dāng)于X軸值, top相當(dāng)于Y軸值, 通過這兩個值A(chǔ)ndroid系統(tǒng)可以知道視圖的繪制起點(diǎn),在通過Wdith 和 Height 可以得到視圖上下左右具體值,就可以在屏幕上絕對位置繪制視圖。right 與 bottom計(jì)算如下:
right = left + width;
bottom = top + height;
二、 View中相應(yīng)API
view.getLeft()表示的是view左側(cè)以其父View的左上角為原點(diǎn)的水平坐標(biāo)位置 ;
view.getRight()表示的view右側(cè)以其父View的左上角為原點(diǎn)的水平坐標(biāo)位置 ;
view.getTop()表示的是view頂部以父View的左上角為原點(diǎn)的垂直坐標(biāo)位置 ;
view.getBottom()表示的是view底部以父View的左上角為原點(diǎn)的垂直坐標(biāo)位置 ;
view.getWidth()表示view寬度;
view.getHeight()表示view高度 ;
1>ListView已到頂部的判斷
<span style="font-size:18px;"> public boolean isListViewReachTopEdge(final ListView listView) {boolean result=false;if(listView.getFirstVisiblePosition()==0){final View topChildView = listView.getChildAt(0);result=topChildView.getTop()==0;}return result ;}</span>注:view的getTop()表示的是該View的頂部到父控件的左上角的垂直距離。
當(dāng)ListView的第一個child View的getTop()為零時,就表示ListView已經(jīng)滾動到頂部了或已經(jīng)在頂部不能在向上滑動了
2>ListView已到底部的判斷
<span style="font-size:18px;">public boolean isListViewReachBottomEdge(final ListView listView) {boolean result=false;if (listView.getLastVisiblePosition() == (listView.getCount() - 1)) {final View bottomChildView = listView.getChildAt(listView.getLastVisiblePosition() - listView.getFirstVisiblePosition());result= (listView.getHeight()>=bottomChildView.getBottom());};return result;}</span>注:view的getBottom()表示的是該View底部到父控件的左上角的垂直距離
當(dāng)ListView的最后一個child View的getBottom()小于等于ListView的getHeight()時,就表示ListView滾動到底部或已經(jīng)在底部了,不能再向下滑動了。
關(guān)于View的getLeft, getRight, getTop, getBottom更多內(nèi)容請參考點(diǎn)擊打開鏈接
總結(jié)
以上是生活随笔為你收集整理的ListView已到底部和顶部的判断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fragment onCreateVie
- 下一篇: Android 4.0新增Space及G