2015-09-21 21 views
12

içine ne kadar daraltılması gerektiğini ayarlayın ListView ve ilgili DetailView uygulamasını oluşturuyorum. Benim ListView, tıklatıldığında kullanıcıyı DetailViewActivity'a götüren öğelere sahiptir.Daraltılabilir Araç Çubuğu: Araç çubuğunun onCreate

DetailViewActivity üzerinde, Katlanabilir Araç Çubuğu uyguladım. Şimdi, her seferinde DetailViewActivity açıldığında, Katlanabilir Araç Çubuğunda ImageView'a farklı bir resim (farklı boyutlarda) ayarlanır.

Toolbar'un varsayılan olarak belirli bir yüksekliğe kadar açılmasını (256dp demek) istiyorum, ancak resim yüksekliği bundan büyükse, kullanıcının görüntünün geri kalanını görüntülemek için aşağı çekebilmesi gerekir. (tam olarak Whatsapp gibi)

Etkinliği her açtığımda her zaman Toolbar'un yüksekliğini programlı olarak ayarlamayı başardım, ancak sorun şu ki, Toolbar her zaman tamamen genişletilmiştir. Dolayısıyla, resim daha büyükse, varsayılan olarak Araç Çubuğu çok büyüktür. Görüntünün yüksekliğinden bağımsız olarak 256dp'ye daraltılmasını istiyorum.


benim düzeni için kodudur:


Ve Faaliyet içinde

<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> 
, ben yüksekliğini bulundu ve böyle Toolbar bunu belirledik:

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); 

Benim p yapmak için ekran görüntüleri ekliyorum merhem temizleyici. enter image description here

Ve bu benim kodundan elde ediyoruz: Bu tam benim Araç Çubuğu her etkinlik başlattı alır zaman olmak istiyorum boyu ne kadar

Şimdi

enter image description here

, ben kodu 256dp'ye kodlayabilir, ancak kullanıcı görüntünün geri kalanını görmek için aşağı kaydırmayacaktır. Lütfen öneriniz.

Cevabınız için teşekkür ederiz. Herhangi bir yanıt beni işe başlattı

+0

Güzel klavye) –

cevap

12

Son olarak çözümü buldunuz. Yeni görüntüyü aldıktan sonra, Bitmap'imi expandToolbar() yöntemimin bir parametresi olarak geçirdim. HeightDp parametresi, Görünümün ilk scrolledHeight değerini belirtir. Ben 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); 
} 

Hope, https://stackoverflow.com/a/30747281/3286614 den sayesinde fikrim var bu birilerini yardımcı olur.

+0

Çok teşekkürler, aynısını yapan herhangi bir Kütüphane var mı? Kullanırdım. –

+0

Bir tane bulamadım, umutsuzca birini arıyordum. – Rachit

+0

Oh lanet :(! Kodunuzla nasıl yapacağımı anlamaya çalışacağım –

İlgili konular