44

मेरे ऐप में एक व्यूअर और 4 टैब हैं, प्रत्येक टैब में कई खंड हैं। लेकिन मैं सिर्फ 2 टूलबार में रीसाइक्लिंगव्यू स्क्रॉल करते समय अपने टूलबार को ऊपर/नीचे स्क्रॉल करना चाहता हूं। लेकिन मुझे नहीं पता कि अन्य टैब के लिए टूलबार स्क्रॉल को कैसे अवरुद्ध करना है। मैंने प्रत्येक खंड के लिए टूलबार आयात करने की कोशिश की लेकिन ऐसा लगता है कि मैं इसे नहीं कर सकता। किसी को भी इस समस्या को हल करने का विचार है?ऐप कैसे सेट करें: टूलबार के लिए layout_scrollFlags प्रोग्रामेटिक रूप से

उत्तर

83

मैं किस टैब का चयन करने के आधार पर स्क्रॉलिंग झंडे को बदलने के खिलाफ दृढ़ता से अनुशंसा करता हूं - गैर-रीसाइक्लिंगव्यू टैब पर स्क्रॉल करते समय टूलबार स्वचालित रूप से वापस लौटाता है (और सामग्री नीचे चला जाता है) बहुत झटकेदार हो सकता है और शायद एक बातचीत नहीं हो सकता है पैटर्न जो आप चाहते हैं (अगर आपके दो RecyclerView टैब एक दूसरे के बगल में हैं तो उत्तेजित)। आदेश में

Toolbar toolbar = ... // your toolbar within an AppBarLayout 
AppBarLayout.LayoutParams params = 
    (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); 
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL 
    | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); 

झंडे

params.setScrollFlags(0) 
+15

धन्यवाद स्पष्ट करने के लिए:

हालांकि, अगर आप व्यक्तिगत रूप से यह देखने के लिए चाहते हैं, आप setScrollFlags() प्रोग्राम के रूप में पुस्तक झंडे सेट करने के लिए उपयोग कर सकते हैं। मैं इसे इस तरह से नहीं बनाना चाहता हूं लेकिन मेरा बेवकूफ ग्राहक इसे चाहता है: डी। –

+0

धन्यवाद, रास्ता सही है! – Mao

+0

क्या सूचीव्यू के लिए स्क्रॉलिंग कार्य (अर्थात् छुपाएं और तत्वों का शो, ऐप-बार की तरह) को स्क्रॉल करना संभव है? –

8
// Show toolbar when we are in maps mode 
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) mToolbar.getLayoutParams(); 
CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams(); 
if(isMapIndex) { 
    params.setScrollFlags(0); 
    appBarLayoutParams.setBehavior(null); 
    mAppBarLayout.setLayoutParams(appBarLayoutParams); 
} else { 
    params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); 
    appBarLayoutParams.setBehavior(new AppBarLayout.Behavior()); 
    mAppBarLayout.setLayoutParams(appBarLayoutParams); 
} 
संबंधित मुद्दे