5

Kullanıcının Excel benzeri bir yapıyı yatay ve dikey olarak kaydırmasına olanak tanıyan bir görünüm oluşturmaya çalışıyorum. Benim ilk fikrim bir HorizontalScrollView içine bir RecyclerView (LinearManager ile) koymak oldu. Ama işe yaramıyor. HorizontalScrollView (Recyclerin içindeki görünümler kenarına kırpma gibi) normal FrameLayout gibi hareket gibi görünüyor, sadece Recycler kaydırma sağlar Şu andaYatay Listede Görünümlü Geri Dönüşümlü GörünümViewViewView

<RelativeLayout 
    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"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/gameplay_Toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="56dp" 
     android:background="@color/accent" 
     app:title="@string/gameplay_score_toolbar" 
     app:titleMarginStart="48dp" 
     app:titleTextAppearance="@style/toolbar_title" /> 

    <HorizontalScrollView 
     android:id="@+id/gameplay_hotizontalScroll_ScrollView" 
     android:layout_below="@+id/gameplay_Toolbar" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="5dp" 
     android:layout_marginLeft="5dp" 
     android:fillViewport="true" 
     > 

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

    </HorizontalScrollView> 

</RelativeLayout> 

:

İşte benim kodudur.

Geri dönüştürücüye yerleştirdiğim görüntülerin sabit boyutta olmasıyla alakalı olabileceğini düşünüyorum.

Bu kavramın nasıl çalışacağına dair ipuçları var mı?

+0

sen [RecyclerView Playground] göz attınız mı (https://github.com/devunwired/recyclerview-playground)? – kassim

+0

Bu arada, AFAIK 'fill_parent' ve' match_parent' aynı etkiye sahiptir. –

+0

bu konuda herhangi bir gelişme var mı? – headsvk

cevap

1

[Çözüldü]

Tüm hile ekran genişliğinin olarak maksimum olduğunca geniş daima WRAP_CONTENT kabul etmiyor çünkü elle RecyclerView genişliği ayarlamaktır.

public class SmartRecyclerView extends RecyclerView { 

public int computedWidth = <needs to be set from outside> 

public SmartRecyclerView(Context context) { 
    super(context); 
} 

public SmartRecyclerView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public SmartRecyclerView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 

@Override 
public boolean canScrollHorizontally(int direction) { 
    return false; 
} 

@Override 
public int getMinimumWidth() { 
    return computedWidth; 
} 

@Override 
protected void onMeasure(int widthSpec, int heightSpec) {  
    super.onMeasure(widthSpec, heightSpec); 
    setMeasuredDimension(computedWidth, getMeasuredHeight());  
} 

@Override 
protected int getSuggestedMinimumWidth() {  
    return computedWidth; 
} 
} 

ve sonra basitçe: Trick takip ediyor

HorizontalScrollView myScroll = ... 
SmartRecyclerView recyclerView = new SmartRecyclerView(...) 
... 
recyclerView.computedWidth = myNeededWidth; 
myScroll.addView(recyclerView); 

ve ÇALIŞIR! Mutlu kodlama ...

örnek çalışma kodu: https://dl.dropboxusercontent.com/u/79978438/RecyclerView_ScrollView.zip

+0

Numunenizi github üzerine gönderebilir misiniz? Dropbox bağlantısı çalışmıyor. –

+0

Merhaba, işte çalışma linki: https://www.dropbox.com/s/d8tvppwvo9s2w24/RecyclerView_ScrollView.zip?dl=0 – Hox

İlgili konular