WebHU - Programozási kérdések és válaszok

Hogyan korlátozható a Recyclerview görgetése?

A függőleges újrahasznosító nézetemben több vízszintes újrahasznosító nézetem van, és van egy problémám: ha balra vagy jobbra akarok görgetni, ha egyidejűleg egy kicsit felfelé vagy lefelé görgetek, a vízszintes görgetés nem működik.

Tehát az volt az ötletem, hogy újradefiniáljam, mi van fent, lent, balra és jobbra az újrahasznosító nézetben. Így hát ráakadtam erre a szálra: Hogyan lehet észlelni csúsztassa az ujját a bal/jobb és a fel/le között

Először azt hittem, hogy ez az, amire szükségem van, de aztán megértettem, ez csak az irányok újradefiniálása egy húzás végén (nem közben), így megpróbáltam az összes szögszámítást elvégezni a csúsztatás során. Ezzel fejeztem be:

var initialX: Float
var initialY: Float

    ui_recyclerView?.setOnTouchListener(object: View.OnTouchListener{

            override fun onTouch(v: View?, event: MotionEvent?): Boolean {
                val action = event?.actionMasked

                if (action == MotionEvent.ACTION_DOWN) {
                    initialX = event.x
                    initialY = event.y

                }
                else if(action == MotionEvent.ACTION_MOVE) {
                    val swipeDirection = GestureUtils.getSwipeDirection(initialX, initialY, event.x, event.y)

                    if (swipeDirection == GestureUtils.Direction.UP || swipeDirection == GestureUtils.Direction.DOWN) {
                        return false
                    }

                }

                return true
            }

        })

Működött, de aztán már nem volt sima görgetés (nagyon robotos volt), és a kattintás sem.

Létezik-e beépített funkció recycler nézettel a MoveEvent egy bizonyos szögben történő korlátozására? Ha nem, hogyan állíthatom vissza a normál újrahasznosító nézet sima görgetési hatását?

Ez sokat segítene nekem!


  • szerkessze kérdését xml-elrendezéssel 19.02.2020
  • Az xml-elrendezés egyszerű, ez egy újrahasznosító nézet 4 elemmel: 1. Cím 2. Vízszintes újrahasznosító nézet 3. Cím 4 . Vízszintes újrahasznosító nézet 19.02.2020
  • A setnestedscrollviewenabled értéke false az xml recyclerview-ban 19.02.2020

Válaszok:


1

Megpróbálhatja korlátozni a görgetés függőleges mozgását az újrahasznosítón egy ScrollListener segítségével, így csak akkor aktiválódik, ha nagy görgetést hajt végre a képernyőn, például:

final int delimitationUp=25;
final int delimitationDown=-25;
yourVerticalRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
        }

        @Override
        public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if(dy>delimitationUp){//move up} 
            if (dy<delimitationDown){//move down}

Tesztelje a határvonalakat

19.02.2020
  • Szia Alvaro, köszönöm a válaszát, kipróbáltam, amit mondtál, lehet, hogy van valami, de hogyan tudom megállítani a görgetést, ha túllépek a határokon? Megpróbáltam írni a super.onScrolled(recyclerView, 0,0) fájlt, de nem sikerült 19.02.2020
  • Kipróbálhatja a VerticalRecycler.setNestedScrollingEnabled(false); amikor be van görgetve 19.02.2020
  • Pont az ellenkezőjét szeretném :D Szeretném, ha a sub recycler nézeteim könnyebben görgethetőek lennének 19.02.2020
  • Tehát csak az OnScrollListenert kell megvalósítania a vízszintes újrahasznosító chideken, és a yourVerticalRecycler.setNestedScrollingEnabled(false) függvényt kell meghívnia, amikor a chid vízszintesen görget. 19.02.2020
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..