Начальное значение смещения Horizontalscrollview - PullRequest
1 голос
/ 01 марта 2011

Как установить начальное значение смещения HorizontalScrollView?Я использовал smoothScrolTo (), но он не работает.

Пожалуйста, помогите.

Ответы [ 3 ]

10 голосов
/ 02 ноября 2011

Используйте View.getViewTreeObserver.addOnGlobalLayoutListener , чтобы добавить прослушиватель, который будет знать, когда выкладывается scrollview.В обратном вызове вы можете установить прокрутку.

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

scroll.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
   @Override
   public void onGlobalLayout(){
      scroll.getViewTreeObserver().removeGlobalOnLayoutListener(this);
      scroll.scrollTo(x, y);
   }
});
3 голосов
/ 13 апреля 2011

Вы не можете вызывать smoothScrolTo () во время onCreate, onStart или onResume. попробуйте дать небольшую задержку, как это:

public void onResume() {
    super.onResume();
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            HorizontalScrollView sv = (HorizontalScrollView)findViewById(R.id.ScrollView01);
            sv.smoothScrollTo(1000, 0);
        }
    }, 100);
}

Это работает для меня, но кто-нибудь знает, какое время лучше (например, в слушателе) для вызова smoothScrollTo?

0 голосов
/ 19 июля 2016

Другой способ решить эту проблему - через xml.

Хитрость заключается в том, чтобы добавить "Виды пространств" в качестве дочерних элементов HorizontalScrollView и установить для них ширинусмещение, которое вы хотите получить.

Пример:

<!--BUTTONS ON HORIZONAL SCROLL -->
    <HorizontalScrollView
        android:id="@+id/scroll_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/scroll_view_child_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <!-- This View does the trick! -->
            <Space
                android:layout_width="16dp"
                android:layout_height="match_parent" />

            <Button
                android:id="@+id/btn_1"
                style="@style/HorizontalScrollButtons"
                android:text="Btn1" />

            <Button
                android:id="@+id/btn_2"
                style="@style/HorizontalScrollButtons"
                android:text="Btn1" />

            <!-- Keep adding buttons... -->

            <!-- This View does the trick too! -->
            <Space
                android:layout_width="16dp"
                android:layout_height="match_parent" />


        </LinearLayout>

    </HorizontalScrollView>

В этом примере я хочу "запас" на 16 дп, поэтому я даю Пробел Просмотр ширина из 16dp.

Это даст это ... The way we want

... вместо этого ... enter image description here

... в качестве начального вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...