Ако ми ListView няма в режим на превъртане (поради няколко елемента на екрана), тогава го искам android:stackFromBottom="false"
но ако списъкът ми започна да се придвижва (достатъчно елементи за превъртане), тогава искам android:stackFromBottom="true"
чрез моя код. Как мога да дойда? Надявам се, че ще ме вземете.
Отговори:
2 за отговор № 1сравнение getLastVisiblePosition()
с getCount()
в Runnable, за да видите дали целият ListView се побира на екрана веднага щом бъде изчертан. Трябва също така да проверите дали последният видим ред съвпада изцяло на екрана.
Създаване на Runnable:
ListView listView;
Runnable fitsOnScreen = new Runnable() {
@Override
public void run() {
int last = listView.getLastVisiblePosition();
if(last == listView.getCount() - 1 && listView.getChildAt(last).getBottom() <= listView.getHeight()) {
// It fits!
}
else {
// It doesn"t fit...
}
}
};
в onCreate()
на опашката на Runnable в Handler на ListView:
listView.post(fitsOnScreen);
0 за отговор № 2
Една OnScrollListener може да ви даде превъртане състояние на ListView
, Състоянието на превъртане може да бъде FLING, IDLE или TOUCH_SCROLL. Във вашия случай използвайте следното (psuedo):
onScrollStateChanged(AbsListView view, int scrollState){
listView.setStackFromBottom(scrollState != OnScrollListener.SCROLL_STATE_IDLE);
}