2017-02-02 2 views
1

Ich versuche, ein Tablet-Layout mit einer Liste auf der linken Seite und einem Detailfenster auf der rechten Seite einzurichten. Wenn auf ein Listenelement geklickt wird, enthält das Detailfenster eine Reihe von Karten, die länger sind als die Liste auf der linken Seite. Ich möchte, dass der Detailbereich und die Liste (Recycler-Ansicht) unabhängig voneinander ablaufen, aber ich kann mir nicht vorstellen, wie das geht.Android FrameLayouts Seite an Seite mit unabhängigem internen Bildlauf

Hier ist meine main_content.axml - die recyclerview wird in den framelayout listcontainer geladen, und die Details werden in den detailscontainer eingefügt (die textview wird entfernt, bevor dies geschieht) - aber beide Frames scrollen immer noch wie die gesamte App scrollt, scrollt der Rahmen nicht separat.

Als beiseite, main_content.xml ist in einem nestedscrollview gewickelt, so dass ich die kollabierenden Symbolleiste verwenden - Sie main.xml hier sehen können: http://pastebin.com/raw/PGsVuAp6

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <ScrollView 
    android:layout_height="match_parent" 
    android:layout_width="wrap_content" 
    android:layout_weight="1"> 
     <FrameLayout 
      android:id="@+id/listcontainer" 
      android:layout_weight="1" 
      android:layout_width="450dp" 
      android:layout_height="match_parent" > 
     </FrameLayout> 
    </ScrollView> 

    <View android:layout_height="fill_parent" 
    android:layout_width="1dp" 
    android:background="?android:attr/listDivider"/> 

    <ScrollView 
    android:layout_height="match_parent" 
    android:layout_width="wrap_content" 
    android:layout_weight="2"> 
    <FrameLayout 
      android:id="@+id/detailscontainer" 
      android:layout_width="match_parent" 
      android:layout_weight="2" 
      android:layout_height="match_parent" > 
     <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:id="@+id/nodetails" 
     android:layout_centerInParent="true" 
     android:layout_gravity="center" 
     android:text="No inspection selected."/> 

    </FrameLayout> 
    </ScrollView> 

</LinearLayout> 

bearbeiten, für Klarheit, ist hier, was geladen in den Listenrahmen: http://pastebin.com/raw/1Wm8Tntf ----- und hier ist, was in den Detailbereich geladen wird:

Edit 2: Hier ist ein Bild, das zeigt, wie die zwei Rahmen, Liste und Detail, unabhängig voneinander scrollen sollte Wenn Sie also im Detail blättern, sollte sich die Liste nicht bewegen Liste sollte die detial nicht bewegen:

enter image description here

+0

Hallo können Sie nur ein Bild mit Farben hinzufügen wird leicht zu verstehen sein –

+0

@Charu I - Ich habe es auf der Unterseite hinzugefügt, hoffe es macht die Dinge einfacher: D –

+0

was ist mit meinem Vorschlag ? –

Antwort

1

Statt FrameLayout im Kind von ScrollView ein LinearLayout verwenden und es funktioniert! oder versuchen android:fillViewport="true" in ScrollView

enter image description here

Beispiel xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <ScrollView 
     android:layout_height="match_parent" 
     android:layout_width="wrap_content" 
     android:layout_weight="1"> 
     <LinearLayout 
      android:orientation="vertical" 
      android:id="@+id/listcontainer" 
      android:layout_weight="1" 
      android:layout_width="450dp" 
      android:layout_height="match_parent" > 
      <LinearLayout 
       android:background="#897" 
       android:layout_width="match_parent" 
       android:layout_height="300dp"></LinearLayout> 
      <LinearLayout 
       android:background="#127" 
       android:layout_width="match_parent" 
       android:layout_height="300dp"></LinearLayout> 
      <LinearLayout 
       android:background="#908" 
       android:layout_width="match_parent" 
       android:layout_height="300dp"></LinearLayout> 
     </LinearLayout> 
    </ScrollView> 

    <View android:layout_height="fill_parent" 
     android:layout_width="1dp" 
     android:background="?android:attr/listDivider"/> 

    <ScrollView 
     android:layout_height="match_parent" 
     android:layout_width="wrap_content" 
     android:layout_weight="2"> 
     <LinearLayout 
      android:orientation="vertical" 
      android:id="@+id/listcontainerTwo" 
      android:layout_weight="1" 
      android:layout_width="450dp" 
      android:layout_height="match_parent" > 
      <LinearLayout 
       android:background="#897" 
       android:layout_width="match_parent" 
       android:layout_height="300dp"></LinearLayout> 
      <LinearLayout 
       android:background="#127" 
       android:layout_width="match_parent" 
       android:layout_height="300dp"></LinearLayout> 
      <LinearLayout 
       android:background="#908" 
       android:layout_width="match_parent" 
       android:layout_height="300dp"></LinearLayout> 
     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 

FrameLayout ist nur ein Container und problematisch die meiste Zeit mit Scrollview-Szenarien, wenn Sie LinearLayout sowieso verwenden es scrollt ich getestet habe, dass . Sie können finden smiler Frage>here

+0

Dies hat nicht funktioniert, beide scrollview scrolled zusammen, als es nicht registriert, dass der Abschnitt scrollbar war :( –

+0

@Joe Brailsford kann nicht lassen Sie mich Ihnen zeigen! –

+0

Könnte es sein, weil die gesamte main_content.axml in einer verschachtelten scrollview Warped ist? Siehe hier: http://pastebin.com/raw/PGsVuAp6 –