2016-03-25 20 views
1

Bu resim, yapmak istediklerim hakkında biraz açıklamalıdır. Lütfen ViewGroup'un hem textview hem de recyclerview görünümünün FRAMELAYOUT olduğunu unutmayın.Recyclerview: İlk görüntüleyici öğesini en baştan biraz boşlukla başlatın.

enter image description here

Bir recyclerview istiyorum o match_parentFRAMELAYOUT için. "Yerler" kelimesini gösteren textview, geri dönüşüm görüşünün en üstünde olmalıdır. Görüntüden göremezsiniz, ancak textview, alpha 0.5 değerine sahiptir, böylece yarı saydamdır.

Yapmak istediğim resimdeki koyu yeşil renk olan recyclerview viewholders ürününü textview yüksekliğinin altında küçük bir şekilde başlatmaktır. Bu şekilde, kullanıcı recyclerview'u kaydırdığında, öğeler yarı saydam textview'un altına kaydırılabilir.

Geri dönüştürücü görünümündeki ilk öğenin, geri dönüştürücü görünümünden (yani, metin görünümünün yüksekliğinden) çok az bir yoldan başladığından emin olmanın bir yolu var mı, böylece bu etki elde edilebilir?

cevap

5

Yalnızca birinci ürün için öğe süslemeyi deneyin. Bu yardımcı olur

public class VerticalSpaceItemDecoration extends RecyclerView.ItemDecoration { 

    private final int mVerticalSpaceHeight; 

    public VerticalSpaceItemDecoration(int mVerticalSpaceHeight) { 
     this.mVerticalSpaceHeight = mVerticalSpaceHeight; 
    } 

    @Override 
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, 
      RecyclerView.State state) { 
     if (parent.getChildAdapterPosition(view) == 1) { 
      outRect.top = mVerticalSpaceHeight; 
     } 
    } 
} 

KULLANIMI

RecycleView recyclerView = (RecyclerView) rootView.findViewById(R.id.fragment_home_recycler_view); 
LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(getActivity()); 
recyclerView.setLayoutManager(mLinearLayoutManager); 

//add ItemDecoration 
recyclerView.addItemDecoration(new VerticalSpaceItemDecoration(TOP_ITEM_SPACE)); 

Umut.

+0

Bu ilginç bir öneridir. Bunu daha sonra deneyeceğim. – Simon

0

Basitçe

düzen/header.xml

<View xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="@dimen/recyclerViewWidth" 
    android:layout_height="@dimen/yourTextViewHeight" 
    android:background="@android:color/transparent" /> 

kullanım RecyclerView için başlık olarak bu düzen gibi o TextView aynı yükseklikte ile bir düzen oluşturmak.

Bu sorunun çözüleceğini umuyorum.

DÜZENLEME:

Ben bu 'düzen/header.xml' kullanarak, vaka olup olmadığını düzen (i yukarıda specicied) başlık çözecek bu

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/black" 
     android:alpha="0.8" 
     android:text="@string/action_switch" 
     android:textColor="@android:color/white" /> 

</FrameLayout> 

gibidir düşünce sorun. Çünkü 1. öğe başlığı şeffaf olduğu için görünmez. 2. öğe kayarken, TextView'un arkasına geçmek gibi görünecektir.

DÜZENLEME 2: Ayrıca başka bir yol kullanabilirsiniz

. RecyclerView öğesinin düzenine layout/header.xml 'yazın.RecyclerViewsetVibility(true) arasında getView yılında

<Layout ><!-- your item's layout --> 
    <include layout="@layout/panel_icon_item" 
      android:id="@+id/marginTopView" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/yourTextViewHight"/> 
    <!-- your layout code --> 
</Layout> 

gibi öğe diğer 1 setVibility(false)

+0

Hayır olmaz. Lütfen görüntüleme grubunun bir çerçeve olduğunu unutmayın. Eğer önerdiğiniz gibi yaparsam, geribildirimin görünümü metin görünümünde kaydırılmayacak - yarı şeffaf metin görünümünde geridönüşüm göremiyorum. – Simon

+0

Düzenlemeyi bir kez görüntüle. – shobhan

+0

Çözümünüz işe yarayacaktı ancak sorun, geridönüşüm görünümüm sürekli değiştiğinde, kullanıcı tarafından en çok eklenen öğeler, silinmekte olan öğeler vb. Yönetilmesi zor olan geri dönüşüm grubumda sahte bir 1. öğe oluşturacağımdır. – Simon

3

bunu deneyebilirsiniz eğer !! android:clipToPadding="false"

dolgu sıfır değilse ViewGroup, onun dolgu için herhangi EdgeEffect onun çocukları klip ve yeniden boyutlandırma (ama klip değil) olup olmayacağını tanımlar. Bu özellik varsayılan olarak doğru olarak ayarlanmıştır.

<android.support.v7.widget.RecyclerView 
    android:id="@+id/rv" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:clipToPadding="false" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">