13

का उपयोग करके NestedScrollView के साथ आसानी से AppBarLayout फ़्लिंग करें मेरे पास एक AppBarLayout और NestedScrollView है। जब भी यह स्क्रॉल हो जाता है, तो NestedScrollView चाहता हूं, AppBarLayout को विस्तार से विस्तारित करना चाहिए, AppstarSrollView के बिना AppBarLayout स्टॉप के ठीक पहले; ऐसा करने के लिए दूसरी उड़ान/स्क्रॉल की आवश्यकता होती है।AppBarLayout.behavior

मैं स्टैक ओवरफ्लो की जांच करता हूं और यह समाधान बहुत संबंधित पाया, और इसका उपयोग किया जा सकता है। लेकिन इसके बजाय अगर NestedScrollView, यह RecyclerView है। यह https://stackoverflow.com/a/32454407/3286489

मैं मूल रूप से कोड लेता हूं और इसे थोड़ा बदल देता हूं, और वेग को जांचने के लिए उपयोग किया जाता है> 8000 को नीचे दिए गए कोड के रूप में AppBarLayout को फ़्लिंग करने पर विचार करें।

public final class FlingBehavior extends AppBarLayout.Behavior { 
    private boolean isPositive; 

    public FlingBehavior() { 
    } 

    public FlingBehavior(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public boolean onNestedFling(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, float velocityX, float velocityY, boolean consumed) { 
     if (velocityY > 0 && !isPositive || velocityY < 0 && isPositive) { 
      velocityY = velocityY * -1; 
     } 

     if (target instanceof NestedScrollView && Math.abs(velocityY) > 8000) { 
      consumed = false; 
     } 
     return super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, consumed); 
    } 

    @Override 
    public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed) { 
     super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed); 
     isPositive = dy > 0; 
    } 
} 

यह काम करता है, लेकिन आदर्श नहीं है। मैं केवल ऐपबारलाउट पर फ़्लिंग (जारी रखना) शुरू करना चाहता हूं (यानी consumed = false लौटाएं), जब NestedScrollView इसके स्क्रॉल के शीर्ष तक पहुंच गया है। मैं इसे नेस्टेडफलिंग में कैसे देख सकता हूं?

धन्यवाद।

+0

नमस्ते आप इस के लिए किसी भी समाधान मिल गया किया था .. ?? –

+0

नहीं। बस मेरे उपरोक्त प्रति कार्य के रूप में। शायद इस सवाल पर रेटिंग की उच्च मांग इस समस्या को हल करने के लिए कुछ ध्यान आकर्षित करेगी? – Elye

+0

हाँ, मैंने वास्तव में यहां लगभग एक ही प्रश्न पोस्ट किया है। Http://stackoverflow.com/questions/38119661/fling-with-nestedscrollview-and-appbarlayout –

उत्तर

1

आप NestedScrollView और NestedScrollingChild

if (target instanceof NestedScrollView && Math.abs(velocityY) > 8000) { 
     consumed = false; 
    } 


    if (target instanceof NestedScrollingChild && Math.abs(velocityY) > 8000) { 
     consumed = false; 
    }