2012-02-05 3 views
0

Я создаю представление в своем приложении для Android, которое должно прокручивать как горизонтальное, так и вертикальное. Поэтому я окружил свой взгляд горизонтальным прокруткой, и внутри этого горизонтального представления прокрутки у меня есть другой вид прокрутки (вертикальное представление прокрутки).Фиксированное положение для элементов внутри прокрутки в обоих направлениях

В верхней части прокрутки у меня есть временная шкала (красный на иллюстрации). При прокрутке вертикальной прокрутки временная шкала должна быть статической. Он должен оставаться наверху. Таким образом, эта временная шкала всегда видна сверху.

В левой части этих видов прокрутки у меня есть пять кнопок (разные цвета на иллюстрации). Эти кнопки должны прокручиваться с вертикальным просмотром прокрутки, но не с горизонтальной прокруткой, что означает, что они должны быть видны с левой стороны все время.

Белая область в виде прокрутки будет прокручиваться в обоих направлениях.

У меня есть временная шкала (красная на иллюстрации), которая находится наверху и только прокручивается с горизонтальным видом прокрутки, но я не могу понять, где я должен поставить свои пять кнопок, чтобы убедиться, что они также останутся на сверху и только прокрутка с вертикальным просмотром прокрутки.

Это мой макет, как сейчас, с временной шкалой, находящейся на вершине.

<!-- Horizontal scroll view --> 
<HorizontalScrollView android:id="@+id/schedule_concerts_scroll_view" 
         android:layout_width="wrap_content" 
         android:layout_height="fill_parent" 
         android:fadingEdge="none" 
         android:scrollbars="none" 
         android:layout_below="@+id/schedule_day_pager_layout"> 

    <!-- Scroll container for horizontal scroll view --> 
    <RelativeLayout android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:id="@+id/schedule_layout"> 

     <!-- The timeline (red in the illustration) Should only scroll horizontal and stay at top --> 
     <RelativeLayout android:id="@+id/schedule_timeline" 
         android:layout_width="wrap_content" 
         android:layout_height="23dp" 
         android:layout_marginBottom="0dp" 
         android:layout_alignParentTop="true" /> 

     <!-- Vertical scroll view --> 
     <ScrollView android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:fadingEdge="none" 
        android:scrollbars="none" 
        android:layout_below="@+id/schedule_timeline"> 

      <!-- Scroll container for vertical scroll view --> 
      <RelativeLayout android:layout_width="wrap_content" 
          android:layout_height="wrap_content"> 

       <!-- The content here should be scrolling both ways --> 

      </RelativeLayout> 

     </ScrollView> 

    </RelativeLayout> 

</HorizontalScrollView> 

Это иллюстрация, о которой я говорил. Это должно помочь объяснить, как закончится мой макет.

Illustration of scroll directions

Кто-нибудь знает, как я могу достичь прокрутки в обоих направлениях с видом имеющих фиксированное положение в обоих направлениях?

ответ

1

Я нашел, что было легко перемещать кнопки с левой стороны из обоих видов прокрутки и слушать onScrollChanged, и всякий раз, когда прокручивался вертикальный прокрутка, прокручивайте соответствующие кнопки. Поэтому я помещал кнопки внутри вида прокрутки и вызывал onScroll() в этом прокрутке, когда вызывался onScrollChanged().

Для отличного описания о том, как расширить ScrollView для реализации onScrollChanged() см., this answer.

Смежные вопросы