5

Ekranın yüksekliğini alacağınız dinamik bir görünüm eklemek için AppBarLayout'umu gizlemek istiyorum. Bunun için, AppBarLayout öğesinin görünürlüğünü GONE olarak ayarlayarak bir görünümü geçici olarak kaldırmak istiyorum. Görünüm görünmüyor, ancak ekranda yer kaplıyor (ekranın yüksekliğinin yarısı).AppBarLayout setVisibility (View.GONE) sonrası boşluk bırakın

Benim XML kodu:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/coordinatorFriendProfil" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#81D4FA" 
android:fitsSystemWindows="true"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/fProfilAppBar" 
    android:layout_width="match_parent" 
    android:layout_height="250dp" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/fProfilCollapsing" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#B3E5FC" 
     android:gravity="center" 
     android:orientation="vertical" 
     app:contentScrim="#03A9F4" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <LinearLayout 
      android:id="@+id/fProfilUserInfo" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:orientation="vertical"> 

      <com.neden.neden.RoundedImageView 
       android:id="@+id/ivFriendPicture" 
       android:layout_width="150sp" 
       android:layout_height="150sp" 
       android:layout_gravity="center" 
       android:fitsSystemWindows="true" 
       android:src="@drawable/photo" 
       app:border_color="#64B5F6" 
       app:border_width="4dp" 
       app:layout_collapseMode="parallax" 
       app:layout_collapseParallaxMultiplier="0.7" /> 

      <TextView 
       android:id="@+id/fProfilName" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:textSize="15pt" /> 

     </LinearLayout> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/fProfilToolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:layout_scrollFlags="scroll|enterAlways" /> 

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

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

<FrameLayout 
    android:id="@+id/fProfilContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

Sorunu gösteren resim eklemek istiyorum ama değil çünkü itibarımı can. Çok kötü ingilizce için özür dilerim, çok iyi konuşamıyorum.

cevap

3

deneyin senin sorunun Sen programlama bu alanı vardır fiili konteyner parçası değil CoordinatorLayout üzerine ayırmak zorunda kalacaklar

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

bu hat kaynaklanır sıfır

AppBarLayout appBar=(AppBarLayout)findViewById(R.id.fProfilAppBar); 
LinearLayout.LayoutParams params=appBar.getLayoutParams(); 
params.height=0; 
appBar.setLayoutParams(params); 
+0

kaydırma ama bunu yaparken, benim FrameLayout öyle mi ne layout_height – Okn

+0

için match_parent almaz olmak için nasıl

mContainer = (FrameLayout) findViewById(R.id.main_content_container); CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mContainer.getLayoutParams(); params.setBehavior(null); mContainer.requestLayout(); 

olduğunu "layout_height için match_parent değerini alamıyor" demek? Ekrana uymuyor mu? – mohax

+0

İngilizce için üzgünüm. FrameLayout'un ekranın tüm yüksekliğini almasını istiyorum, ancak appBarLayout'u ayarladığım zaman, FrameLayout ekranın en üstünde ancak altta değil (margin_bottom gibi ama kodumda herhangi bir kenar boşluğu göremiyorum). Basitleştirmek için, ben android istiyorum: layout_height: "match_parent" – Okn

5

için AppBarLayout yüksekliğini ayarlamak için . İşte

bunu İşe tekrar

params.setBehavior(new AppBarLayout.ScrollingViewBehavior()); 
+0

kullanın. Bu cevap SO üzerinde çok fazla çözüm denedikten sonra benim için çalıştı. –

İlgili konular