Próbuję zaimplementować pewien rodzaj wyboru koła dla mojej aplikacji, ponieważ obecne opcje polegają na niestandardowym Views
lub starym ListView
, więc chciałbym oprzeć moje rozwiązanie na RecyclerView
.Wyśrodkowo zaznaczony element w RecyclerView
co zrobiłem do tej pory było ustalone na początku i na końcu RecyclerView
dwa View
z innego typu, o nazwie PADDING_TYPE
tak, że pierwszy i ostatni element są pionowo w środku RecyclerView
.
recyclerView.post(new Runnable() {
@Override
public void run() {
//80dp is the height of a regular list item
int paddingHeight = ((recyclerView.getHeight()-SettingsManager.dptopixels(80))/2);
binding.getRoot().getLayoutParams().height = paddingHeight;
}
});
Teraz próbuję zrozumieć, jak zachować wybrany element pionowo w środku.
Co próbowałem dotąd:
1- LinearSnapHelper
LinearSnapHelper helper = new LinearSnapHelper();
helper.attachToRecyclerView(mRecyclerView);
nie działa zgodnie z oczekiwaniami, próbowałem też przesłonić kilka metod (prawdopodobnie w niewłaściwy sposób), ale mogę powoduje automatyczne wyśrodkowanie zaznaczenia w pionie. I nie jest wystarczająco sprytny, wybrany element "porusza się", zamiast być zablokowany na pionowym środku.
2- klienta RecyclerView.OnScrollListener
starałem się dostosować kod zaproponowany here, który jest dla przewijania w poziomie, poprzez zmianę w RecyclerView.OnScrollListener
tę linię
allPixelsDate += dx;
z pionowym różnicy przewijania:
allPixelsDate += dy;
Ta implementacja n jest blisko pracy, ponieważ wybiera najbliższy element do pionowego środka listy, ale bez blokowania go do środka.
Czy można osiągnąć taki wynik? W jaki sposób?
Aby było bardziej zrozumiałe: Chciałbym osiągnąć wynik pokazany here o 1:10. Wybór jest "zablokowany" w środku.
spróbuj tego kodu w celu odniesienia [link] (http://developer.samsung.com/s-pen-sdk/samples/Circle-Launcher) – Moinkhan
Zrobiłem to za pomocą https://github.com/ai212983/ android-spinnerwheel i myślę, że potrzebujesz tego w pionie Mannner https://github.com/Jaouan/Carousel-Browsing-Eample, – Nepster
możesz użyć tej metody w pionie, aby to osiągnąć [otwórz to] (http://stackoverflow.com/a/38411582/2587027) – wadali