Исправлено положение элементов внутри прокрутки в обоих направлениях. - PullRequest
1 голос
/ 05 февраля 2012

Я создаю представление в моем приложении для 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 Ответ

1 голос
/ 06 февраля 2012

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

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

...