znalazłem rozwiązanie. Nie jestem pewna, czy to zbyt eleganckie, ale działa tak, że odejdzie, chyba że ktoś wymyśli coś lepszego.
Widok, który chcę przewijać razem z listą, jest widokiem niestandardowym, który musi wiedzieć o widoku listy. Więc wdrożyć setListView (ListView ListView) metodę na nim:
private int scrollY; //1
private Map<Integer, Integer> listViewItemHeights = new Hashtable<>();
public void setListView(final ListView listView) {
listView.setOnScrollListener(new OnScrollListener() { //2
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {} //3
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //4
View c = listView.getChildAt(0);
if (c != null) {
int oldScrollY = scrollY;
scrollY = -c.getTop();
listViewItemHeights.put(listView.getFirstVisiblePosition(), c.getHeight());
for (int i = 0; i < listView.getFirstVisiblePosition(); ++i) {
if (listViewItemHeights.get(i) != null)
scrollY += listViewItemHeights.get(i);
}
scrollBy(0, scrollY - oldScrollY);
}
}
});
}
Komentarz nr 1: jest to zmienna pozwala mi śledzić aktualną pozycję przewijania.
Komentarz No.2: ustawienie na nowy przewijania słuchacza niech mój zwyczaj widok wiedzieć, kiedy lista
Komentarz No.3: to nie musi być realizowane w tym przypadku.
Komentarz nr 4: tutaj dzieje się magia. Uwaga na końcu przewijam mój widok scrollY - oldScrollY, zacznij od tego pierwszego. oldScrollY to utrzymana pozycja przewijania, scrollY to nowa. Muszę przewijać różnicę między nimi. Jeśli chodzi o sposób obliczania scrollY, odsyłam do mojej odpowiedzi tutaj: Android getting exact scroll position in ListView, tak obliczana jest pozycja przewijania w widoku listy.
Witam, dziękuję za odpowiedź. Potrzebuję górnych wierszy w liście do "wytłoczenia", więc nie mogę umieścić tego widoku w nagłówku. – Maria
możesz zgłębić, tworząc dwa niestandardowe układy i pierwszy pierwszy układ położeń i drugi układ dla całego spoczynku. Tak więc musisz dodać konieczną wartość w tablicy, co wiążesz w baseadapter –
Chodzi o to, że nie potrzebuję chcesz, aby znaczek pojawił się na pierwszej pozycji. Wysokość wierszy może być inna na mojej liście, a znaczek może przekroczyć pierwsze trzy lub więcej. – Maria