2015-09-21 11 views
12

पर टूलबार को कितना ढहना चाहिए, मैं ListView और इसके संबंधित DetailView एप्लिकेशन बना रहा हूं। मेरा ListView में आइटम हैं जो क्लिक किए गए हैं यदि उपयोगकर्ता को DetailViewActivity पर ले जाएं।संकुचित टूलबार: सेट करें कि टूलबार

DetailViewActivity पर, मैंने एक Collapsible टूलबार लागू किया है। अब, हर बार DetailViewActivity खोला जाता है, एक अलग छवि (विभिन्न आयामों के साथ) को संकुचित टूलबार में ImageView पर सेट किया जाता है।

मुझे लगता है कि Toolbar डिफ़ॉल्ट रूप से एक निश्चित ऊंचाई तक खुला होना चाहिए (256 डीपी कहें), लेकिन यदि छवि की ऊंचाई उससे अधिक है, तो उपयोगकर्ता शेष छवि को देखने के लिए नीचे खींचने में सक्षम होना चाहिए। (वास्तव में Whatsapp की तरह)

मैं प्रोग्राम के रूप में Toolbar हर बार मैं गतिविधि को खोलने की ऊंचाई निर्धारित करने के लिए प्रबंधित किया है, लेकिन समस्या यह Toolbar हमेशा पूरी तरह से विस्तार होता है, है। तो यदि छवि बड़ी है, तो डिफ़ॉल्ट रूप से टूलबार बहुत बड़ा है। मैं छवि की ऊंचाई के बावजूद इसे 256 डीपी तक गिराना चाहता हूं।


मेरी लेआउट के लिए कोड है:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.CoordinatorLayout 
     android:id="@+id/rootLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/appbar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/app_bar_height" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

      <android.support.design.widget.CollapsingToolbarLayout 
       android:id="@+id/collapsingToolbarLayout" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:contentScrim="?attr/colorPrimary" 
       app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start" 
       app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

       <ImageView 
        android:id="@+id/image" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:scaleType="centerCrop" 
        android:src="@drawable/background_navdrawer" 
        app:layout_collapseMode="parallax" 
        app:layout_collapseParallaxMultiplier="0.7"/> 

       <View 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_marginTop="130dp" 
        android:background="@drawable/gradient_header_background" 
        app:layout_collapseMode="parallax" 
        app:layout_collapseParallaxMultiplier="0.1"/> 

       <android.support.v7.widget.Toolbar 
        android:id="@+id/toolbar" 
        android:layout_width="match_parent" 
        android:layout_height="?attr/actionBarSize" 
        app:layout_collapseMode="pin" 
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 


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

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


     <android.support.v4.widget.NestedScrollView 
      android:id="@+id/detail_nested_scroll_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

      <FrameLayout 
       android:id="@+id/detail_container" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       tools:ignore="MergeRootFrame"/> 

     </android.support.v4.widget.NestedScrollView> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="12dp" 
      android:orientation="vertical" 
      app:layout_anchor="@+id/appbar" 
      app:layout_anchorGravity="bottom"> 

      <View 
       android:id="@+id/toolbar_shadow_transparent" 
       android:layout_width="match_parent" 
       android:layout_height="@dimen/toolbar_elevation" 
       android:background="@color/transparent"/> 

      <View 
       android:id="@+id/toolbar_shadow" 
       android:layout_width="match_parent" 
       android:layout_height="@dimen/toolbar_elevation" 
       android:background="@drawable/dropshadow"/> 
     </LinearLayout> 


     <com.github.clans.fab.FloatingActionButton 
      android:id="@+id/action_edit" 
      style="@style/MenuButtonsStyle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="10dp" 
      android:src="@drawable/ic_edit" 
      app:layout_anchor="@+id/appbar" 
      app:layout_anchorGravity="bottom|right|end"/> 

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

    <ImageView 
     android:id="@+id/detail_back_arrow_land" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="gone"/> 

    <TextView 
     android:id="@+id/course_name_textview" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:visibility="gone"/> 

</RelativeLayout> 

और मेरी गतिविधि में, मैं ऊंचाई मिल गया और Toolbar इस तरह के लिए यह निर्धारित किया है:

appBar = (AppBarLayout) findViewById(R.id.appbar); 
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) appBar.getLayoutParams(); 
lp.height = my_bitmap.getHeight(); 
DetailActivity.appBar.setLayoutParams(lp); 
DetailActivity.mImageView.setImageBitmap(my_bitmap); 

मैं अपने पी बनाने के लिए स्क्रीनशॉट संलग्न कर रहा हूँ ओंट स्पष्ट है।

यह वास्तव में कैसे लंबा मैं अपनी टूलबार गतिविधि का शुभारंभ हो जाता है हर बार होना चाहते है: enter image description here

और यही मैं अपने कोड से मिलता है:

enter image description here

अब, मैं कोड में 256 डीपी तक ऊंचाई को हार्डकोड कर सकता है, लेकिन फिर उपयोगकर्ता शेष छवि को देखने के लिए नीचे स्क्रॉल करने में सक्षम नहीं होगा। कृपया सुझाव दे।

आपकी प्रतिक्रिया के लिए धन्यवाद। कोई भी प्रतिक्रिया मुझे शुरू कर सकती है

+0

सुंदर कीबोर्ड) –

उत्तर

12

अंततः समाधान का पता लगाया। एक बार जब मुझे नई छवि मिली, तो मैंने अपने बिटकमैप को मेरे विस्तार टूलबार() विधि के पैरामीटर के रूप में पास कर दिया। HeightDp पैरामीटर दृश्य के आरंभिक स्क्रॉल किए गए हाइट को निर्दिष्ट करता है। मैं Tuấn Trần Anh

public static void expandToolbar(Bitmap bmp, int heightDp) { 
    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBar.getLayoutParams(); 
    AppBarLayout.Behavior behavior = new AppBarLayout.Behavior(); 
    behavior.setTopAndBottomOffset(0); 
    behavior.onNestedPreScroll(rootLayout, appBar, null, 0, bmp.getHeight() - heightDp, new int[2]); 
    params.setBehavior(behavior); 
    DetailActivity.appBar.setLayoutParams(params); 
} 

आशा करने के लिए धन्यवाद https://stackoverflow.com/a/30747281/3286614 से विचार आया, इस किसी मदद करता है।

+0

बहुत बहुत धन्यवाद, क्या कोई पुस्तकालय ऐसा ही करता है? मैं इसका इस्तेमाल करूंगा। –

+0

एक नहीं मिला, मैं एक सख्त खोज रहा था। – Rachit

+0

ओह डॉन :(! अपने कोड के साथ मैं यह समझने की कोशिश करूंगा कि यह कैसे करें –

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