2015-09-14 4 views
13

मैं एंड्रॉइड समर्थन डिजाइन 'com.android.support:design:22.2.1' का उपयोग कर रहा हूं, मेरी समस्या यह है कि जब स्क्रॉल में कोई सामग्री नहीं है, तो ढहने वाली टूलबार अभी भी पतन क्रिया को सक्षम बनाता है। यदि स्क्रॉल में कोई सामग्री नहीं है तो मुझे दृश्य को ध्वस्त करने की आवश्यकता है।स्क्रॉल सामग्री नहीं होने पर CollapsingToolbar के पतन को अक्षम कैसे करें?

मेरे एक्सएमएल:

<android.support.design.widget.CoordinatorLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app="http://schemas.android.com/apk/res-auto" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true"> 

      <android.support.design.widget.AppBarLayout 
       android:id="@+id/appbar" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fitsSystemWindows="true" 
       android:background="@android:color/white" 
       android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

       <android.support.design.widget.CollapsingToolbarLayout 
        android:id="@+id/collapsing_toolbar" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:fitsSystemWindows="true" 
        app:contentScrim="?attr/colorPrimary" 
        app:expandedTitleMarginEnd="64dp" 
        app:expandedTitleMarginStart="48dp" 
        app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

        <fragment 
         android:id="@+id/pawfile_header" 
         android:name="com.lightbulb.pawesome.fragments.PawfileHeaderFragment" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_marginTop="10dp" 
         android:fitsSystemWindows="true" 
         app:layout_collapseMode="parallax" /> 

       </android.support.design.widget.CollapsingToolbarLayout> 

      </android.support.design.widget.AppBarLayout> 

      <fragment 
       android:id="@+id/pawfile_timeline" 
       android:name="com.lightbulb.pawesome.user_timeline.PawesomeUserTimelineFragment" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

     </android.support.design.widget.CoordinatorLayout> 

अपडेट करें प्रश्न:

मैं अक्षम और देखने के गिर सक्षम करने के साथ किया हूँ। मैं गिर निष्क्रिय करने के लिए आदेश में कोड के इस लाइन का इस्तेमाल किया:

AppBarLayout.LayoutParams appbarParams = (AppBarLayout.LayoutParams)  collapsingToolbar.getLayoutParams(); 
appbarParams.setScrollFlags(0); 
collapsingToolbar.setLayoutParams(p); 

समस्या यह है कि AppBar scrollflags की ऊंचाई को 0 पर सेट है मैं उपयोग करने की कोशिश करने के लिए बल है appbar.setElevation (0) लेकिन इसका कोई प्रभाव नहीं है। मैं अपने ऐपबार से ऊंचाई कैसे हटा सकता हूं?

+0

एप्लिकेशन का प्रयास करें: layout_scrollFlags = "कोई नहीं" .Will इस काम करता है? – rKrishna

+0

मैं प्रोग्रामेटिक रूप से –

उत्तर

19

अपना ऐपबारलेआउट संदर्भ प्राप्त करें और सेटस्क्रॉलफ्लैग सेट करें।

AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); 
p.setScrollFlags(0); 
toolbar.setLayoutParams(p); 
+3

कैसे कर सकता हूं यह सहायक है! लेकिन मैं –

+1

को ध्वस्त करने का तरीका कैसे बदल सकता हूं, वही संदर्भ https://developer.android.com/reference/android/support/design/widget/AppBarLayout.LayoutParams.html#setScrollFlags(int) – rKrishna

+0

आपको बहुत धन्यवाद! –

-1

करके, मैं इसे ले कि आप मतलब है "वहाँ कोई टुकड़ा है" "स्क्रॉल उस में कोई सामग्री नहीं है"। उसके लिए, मुझे लगता है कि आप पहली बार एक <FrameLayout> को <fragment> बदलने के लिए तो टुकड़ा प्रोग्राम के getFragmentManager().beginTransaction() का उपयोग कर जोड़ने के लिए, और उसके बाद जाँच लें कि टुकड़ा (यानी रिक्त नहीं) तो तरह मौजूद है होगा:

if (getFragmentManager().findFragmentById(R.id.fragment_name) != null) { 
      // here try RKNP's code to disable the appBar from collapsing 
    } 
1

करने के लिए collapsingtoolbar की रोक पतन एक्सएमएल file..You में

app:layout_scrollFlags="scroll|exitUntilCollapsed" दे कि कोड

+0

खराब परिषद। फिर स्क्रॉल करने के लिए सामग्री होने पर भी यह पतन नहीं होगा। – Bringoff

3

निकाल सकते हैं की कोशिश करो appbarParams.setScrollFlags(-1); और appBarLayout.setExpanded(true, true) ऊंचाई दूर करने के लिए नहीं है।

और अगर आप टुकड़ा में recyclerView है, recyclerView.setNestedScrollingEnabled(false);

Need to disable expand on CollapsingToolbarLayout for certain fragments

+0

'setScrollFlags' में टूलबार और विस्तारित स्थिति आयोजित की गई। 'setNestedScrollingEnabled' स्थिति को बनाए रखने में सक्षम बनाता है। यह मेरे लिए सबसे साफ समाधान है। – Samuel

संबंधित मुद्दे