7

Yenilemek için çekmeyi uygulamaya çalışıyorum ancak SwipeRefreshLayout ile çocuk görüşünün yüksekliğini kaydırmama sorunu yaşıyorum. Görünüm önizlemesinde ve canlı bir yapıda 0 yüksekliğine sahip gibi görünüyor.SwipeRefreshLayout AppBarLayout İçeriği sarmalamıyor

aşağıdaki gibi düzen: Ben de herhangi bir başarı olmadan SwipeRefreshLayoutAppBarLayout ana yapım yanı sıra SwipeRefreshLayout içinde bir tekil LinearLayout koyarak denedim

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:elevation="0dp"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/transparent" 
     app:layout_collapseMode="pin"> 

     <android.support.v4.widget.SwipeRefreshLayout 
      android:id="@+id/swipe_refresh_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <include layout="@layout/child_layout" /> 

     </android.support.v4.widget.SwipeRefreshLayout> 
    </android.support.v7.widget.Toolbar> 

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

. Tokatlama düzeninin yüksekliğinin 0 olmasını engellemek gibi görünen tek şey, statik olarak ayarlamaktır ancak çocuğun görünümünün yüksekliğine bağlı olarak dinamik olmasını istiyorum.

Burada eksik olduğum bir şey var mı? SwipeRefreshLayout ile bir hata olabilir gibi görünüyor, çünkü içeriği de beklendiği gibi işleyen bir LinearLayout ile değiştirin.

+0

tıklanabilir olmasını üst olmak zorunda temiz tutun? Sadece outloud .. – Phix

+3

"child_layout" için kod yazabilir misiniz. – Kiya

+0

neden araç çubuğunda yapıyorsunuz? Neden ayrı ayrı yapmıyorsunuz – Saveen

cevap

4

Sorununuz, SwipeRefreshLayout ürününüzün Toolbar ve AppBarLayout içerisindedir. AppBarLayout'u başka bir düzen ile sarmalı ve 10'u AppBarLayout'un altına koymalısınız. Bir örnek aşağıdadır. senin SwipeRefreshLayout yükseklik senin child_layout içeriğini sarma ise

<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" 
xmlns:tools="http://schemas.android.com/tools" 
android:fitsSystemWindows="true" 
tools:context="com.vsahin.moneycim.View.MainActivity"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar_layout" 
    android:layout_width="match_parent" 
    android:layout_height="250dp" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark" 
    android:fitsSystemWindows="true" 
    app:expanded="false"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     app:contentScrim="?attr/colorPrimary" 
     android:fitsSystemWindows="true" 
     android:background="@drawable/gradient_background"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      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> 

<android.support.v4.widget.SwipeRefreshLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 

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

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

Orijinal postama eklemeyi unuttum, ancak Uygulama Çubuğu Düzeninin altında alt sayfa olan bir Geri Dönüşüm Görünümü var. Sorun şu ki, alt sayfa açıldığında paralaks efekti için uygulama çubuğu düzenine ihtiyacım var ama sadece uygulama çubuğu düzeninde yenilemek için çekmeyi desteklemek istiyorum. –

1

, sonra child_layout yükseklik match_parent ayarlanmalıdır VEYA Android Documentation

<android.support.v4.widget.SwipeRefreshLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/swiperefresh" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
     <!--Child View--> 
    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</android.support.v4.widget.SwipeRefreshLayout> 
0
gösterildiği gibi hem SwipeRefreshLayout ve child_layout yükseklik match_parent ayarlanmalıdır

SwipeRefreshLayout şeffaf bir View, bu yüzden match_parent ayarlamak için en iyi çözüm diğer Görünümler ile çakışmayacak ve View içermez veya bunun içindeki Layout,

<android.support.v4.widget.SwipeRefreshLayout 
      android:id="@+id/swipe_refresh_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:elevation="0dp"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/transparent" 
     app:layout_collapseMode="pin"> 

     <include layout="@layout/child_layout" /> 

    </android.support.v7.widget.Toolbar> 

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

SwipeRefreshLayout diğer katmanları yerleştirmelerine size SwipeRefreshLayout görünümünün `layout_height` değiştirirseniz` ne match_parent` olmuyorsa