2017-04-26 48 views
0

我正在建立一個像學生一樣的日常時間表。這個時間表是在一個片段。我需要一個帶有七天標籤的粘性標題,然後這些項目需要一次滾動到下面。另外我需要整個視圖水平滾動。RecyclerView與表格像佈局和粘頭 - 最初嘗試NestedScrollView沒有成功

目前我有一個Horizo​​ntalScrollView,一些嵌套的LinearLayouts和一個NestedScrollView。有7個RecyclerView是NestedScrollView的子節點,每週有一天。這樣我可以在每個RecyclerView上撥打setNestedScrollingEnabled(false),讓它們一起滾動。目前的結果是NestedScrollView將RecyclerViews剪輯爲1項,並且不可滾動。如果我刪除NestedScrollView RecyclerViews都單獨滾動這不是我想要的。

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      android:elevation="4dp" /> 

     <FrameLayout 
      android:layout_below="@id/toolbar" 
      android:id="@+id/frame_container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 

    </RelativeLayout> 

fragment_schedule.xml

<?xml version="1.0" encoding="utf-8"?> 
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="8dp" 
    android:paddingBottom="8dp"> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

      <ProgressBar 
       android:id="@+id/loading" 
       android:layout_width="74dp" 
       android:layout_height="74dp" 
       android:visibility="gone" 
       android:layout_gravity="center"/> 

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

       ...7 ImageViews representing days of week... 

      </LinearLayout> 

      <android.support.v4.widget.NestedScrollView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:fillViewport="true"> 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:fillViewport="true" 
        android:layout_marginTop="8dp"> 
        <android.support.v7.widget.RecyclerView 
         android:id="@+id/sunday_list" 
         android:layout_width="84dp" 
         android:layout_height="wrap_content" 
         tools:background="@color/accent_gold"/> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/monday_list" 
         android:layout_width="84dp" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="8dp" 
         tools:background="@color/accent_gold"/> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/tuesday_list" 
         android:layout_width="84dp" 
         android:layout_marginLeft="8dp" 
         android:layout_height="wrap_content" 
         tools:background="@color/accent_gold"/> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/wednesday_list" 
         android:layout_width="84dp" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="8dp" 
         tools:background="@color/accent_gold"/> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/thursday_list" 
         android:layout_width="84dp" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="8dp" 
         tools:background="@color/accent_gold"/> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/friday_list" 
         android:layout_width="84dp" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="8dp" 
         tools:background="@color/accent_gold"/> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/saturday_list" 
         android:layout_width="84dp" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="8dp" 
         tools:background="@color/accent_gold"/> 
       </LinearLayout> 

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

     </LinearLayout> 
</HorizontalScrollView> 

注意到在上述片段類的唯一的事情是,我打電話setNestedScrolledEnabled(false)填充和安裝所有的適配器後, 。

任何洞察力非常感謝!

回答

0

在這種情況下的解決方案是,我正在考慮過於嚴格的要求。我將我的佈局更改爲標題線性佈局,滾動視圖和水平回收視圖,每天都是一個項目。在適配器中,項目佈局僅僅是一個LinearLayout,我可以通過編程方式將類視圖添加到(因爲每天有一定數量的類)。滾動在兩個方向上工作。我會重新回答這個問題,希望有人能夠找到相似的要求。

片段XML

<?xml version="1.0" encoding="utf-8"?> 
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="8dp" 
    android:paddingBottom="8dp"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <ProgressBar 
      android:id="@+id/loading" 
      android:layout_width="74dp" 
      android:layout_height="74dp" 
      android:visibility="gone" 
      android:layout_gravity="center"/> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      > 
      ...Image Views Representing Days of Week... 
     </LinearLayout> 

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

     </ScrollView> 

    </LinearLayout> 
</HorizontalScrollView> 

RecyclerViewItem.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="84dp" 
    android:layout_height="match_parent" 
    android:id="@+id/item_schedule_layout" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="8dp" 
    android:layout_marginBottom="8dp" 
    android:layout_marginLeft="0dp"> 


</LinearLayout> 

然後以編程方式添加意見向的LinearLayout。我對每個類的看法都很複雜,所以我根據每個類需要的佈局創建了一個自定義視圖,然後才能在for循環中定義一個新實例並將其添加到LinearLayout。

相關問題