2016-05-03 31 views
0

Ich verwende das neueste Support-Design (compile 'com.android.support:design:+'), die von 23.2 sollte das Problem mit RecyclerView in ScrollView behoben haben. Das RecyclerView- und das ExpandableListView-Scrolling funktionieren beide perfekt. Aber wenn die ExpandableListView zu lang ist und ich in der Lage sein, das Layout nach oben zu scrollen, so dass ich den Rest sehen konnte, funktioniert der Scrollview einfach nicht.RecyclerView innerhalb ScrollView - ScrollView funktioniert nicht

Fragment:

myRecyclerView = (RecyclerView) view.findViewById(R.id.myRecyclerView); 
    myRecyclerView.setNestedScrollingEnabled(false); 

    LinearLayoutManager layoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false); 
    layoutManager.setAutoMeasureEnabled(true); 
    myRecyclerView.setLayoutManager(layoutManager); 

    MyListAdapter myListAdapter = new MyListAdapter(recyclerDataList, getActivity()); 
    myRecyclerView.setAdapter(myListAdapter); 

xml:

<ScrollView 
      android:id="@+id/scrollView" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:fillViewport="true"> 

      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/headerText" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="header text" 
        android:layout_marginRight="10dp"/> 

       <android.support.v7.widget.RecyclerView 
        android:id="@+id/myRecyclerView" 
        android:layout_below="@id/headerText" 
        android:scrollbars="none" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"/> 


       <ExpandableListView 
        android:id="@+id/expandableList" 
        android:layout_below="@id/myRecyclerView" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:divider="1dp" 
        android:dividerHeight="0dp" 
        android:groupIndicator="@null" 
        android:listSelector="@android:color/transparent" 
        android:showDividers="middle" > 
       </ExpandableListView> 

      </RelativeLayout> 
    </ScrollView> 
+0

das ist kein Duplikat. Mein Recyclerview funktioniert gut, das Problem ist die Scrollview, die die Recyclerview zeigt. – BVtp

Antwort

0

Sie benötigen Listenansicht Höhe zur Laufzeit zu berechnen, nicht oder Listenansicht entbehrlich Listenansicht innen Scroll Ansicht wie diese verwenden können.

Android list view inside a scroll view

0

Sie sollten diese Art und Weise tun:

Implementieren OnItemTouchListener von RecyclerView und Eltern Berührungsereignis auf ACTION_MOVE nicht zulassen.

recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() { 
    @Override 
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { 
     int action = e.getAction(); 
     switch (action) { 
      case MotionEvent.ACTION_DOWN: 
       recyclerView.getParent().requestDisallowInterceptTouchEvent(true); 
      break; 
      case MotionEvent.ACTION_UP: 
       recyclerView.getParent().requestDisallowInterceptTouchEvent(false); 
      break; 
      case MotionEvent.ACTION_MOVE: 
       recyclerView.getParent().requestDisallowInterceptTouchEvent(true);   
      break; 
     } 
     return false; 
    } 

    @Override 
    public void onTouchEvent(RecyclerView rv, MotionEvent e) { 

    } 

    @Override 
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 

    } 
}); 

Hoffe, das wird Ihnen helfen.

+0

Leider funktioniert es nicht:/ – BVtp

+0

@BVtp, ich habe meine Antwort bearbeitet, bitte überprüfen Sie –

+0

Danke für Ihre Hilfe. Leider hat es auch nicht geholfen .. Ich bin so frustriert .. Habe schon so viel drauf drauf: / – BVtp

Verwandte Themen