Mam aplikację z LinearLayout, do której prostokątne fragmenty są dodawane poniżej siebie w czasie od góry do dołu.Android przewiń do dołu po dodaniu nowego fragmentu.
W pewnym momencie ekran jest pełny, a nowe fragmenty są "ukryte" poza widokiem ekranu. Chciałbym wtedy, aby aplikacja była przewijana do dołu za każdym razem, gdy dodawany jest nowy fragment.
Fragment jest dodawany za każdym razem, gdy przycisk w działaniu jest wciśnięty lub zaznaczone jest pole wyboru w powyższym fragmencie. Więc Próbowałem następujących w onClickListeners aw onCreateView fragmentów:
fm.beginTransaction().add(R.id.activity_uhf_layout, fragment).commit(); //Adding fragment
runOnUiThread(new Runnable() {
@Override
public void run() {
scrollView.scrollTo(0, scrollView.getBottom());
}});
Działa to czasami fragment dodaje i przewija ekran w dół, ale jego jak 1/8 razy.
Próbowałem innych rzeczy, takich jak:
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.scrollTo(0, scrollView.getBottom());
}
});
co w zasadzie daje ten sam wynik i próbowałem bez Runnable postu, który nie działa w ogóle.
Rezultatem jest to, że układ jest przewijany tylko do dołu fragmentu, który już jest obecny, a nie aż do końca nowego fragmentu, który został właśnie dodany przez menedżer fragmentów.
Wydaje mi się, że pomimo dodania fragmentu, LayoutManager tak naprawdę "nie wykrył tego" lub czegoś podobnego, ale jak go obejść, nie jestem do końca pewien.
Czy próbowałeś [to] (http://stackoverflow.com/a/4294319/4428462)? Może być konieczne zrobienie czegoś w stylu 'listView.setTranscriptMode (ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL)' i 'listView.setStackFromBottom (true);'. – JonasCz
Nie, ale ponieważ nie używam Listview dla moich fragmentów, naprawdę nie sądzę, żeby to pomogło. Jednak może to być jedyne wyjście z LinearLayout do korzystania z ListView. – HANSEMINATOR
"_got aplikacja z listview_" Ah, nie używasz rzeczywistego ListView, wydaje się. Umieściłbym moje fragmenty wewnątrz ListView, zamiast używać ScrollView. Ponieważ używasz Scrollview, spróbuj [to] (http://stackoverflow.com/a/13860258/4428462), stosując 'scrollview.fullScroll (ScrollView.FOCUS_DOWN);' w sposób runnable. – JonasCz