Автоматическая прокрутка PullToRefreshScrollview в Android

У меня есть Listview, FrameLayout внутри PullToRefreshScrollview. И я загружаю фрагмент в framelayout. Данные загружаются в список с помощью ленивого адаптера. Я могу видеть фрагмент/framelayout во время загрузки списка. Но Scrollview автоматически прокручивается до позиции списка после того, как данные загружены в список, а макет фрейма не виден. Как я могу прокрутить прокрутку вверх? Помогите пожалуйста мне. заранее спасибо

<?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:background="@color/app_bg"
android:orientation="vertical" >


<com.handmark.pulltorefresh.library.PullToRefreshScrollView
    xmlns:ptr="http://schemas.android.com/apk/res-auto"
    android:id="@+id/ptrScrollView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginBottom="5dp"
    android:layout_weight="1"
    android:paddingBottom="5dp"
    ptr:ptrMode="pullUpFromBottom" >

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

        <FrameLayout
            android:id="@+id/frame"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </FrameLayout>

        <com.xxxx.yyyy.CustomListView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/app_bg"
            android:focusable="false"  />

        <ProgressBar
            android:id="@+id/spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:visibility="gone" />
    </LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>



 </LinearLayout>

person Gayathri    schedule 08.08.2013    source источник


Ответы (2)


Вот подход, который я принял

Допустим, у вас есть ссылка на PullToRefreshScrollView, например

PullToRefreshScrollView myRefreshScrollView = (PullToRefreshScrollView)findViewById(R.id. ptrScrollView);

Чтобы получить АКТУАЛЬНЫЙ объект ScrollView, вам нужно вызвать getRefreshableView() следующим образом.

ScrollView myScrollView =  myRefreshScrollView.getRefreshableView();

а затем прокрутите этот объект

myScrollView.scrollTo(0,0);

or

myScrollView.smoothScrollTo(0,0)
person Aerim    schedule 26.09.2013
comment
Спасибо! Эта проблема заняла у меня 3 часа! - person Eddy; 31.10.2014

Есть 2 шага, чтобы заставить его работать:

  1. вы должны установить android:smoothScrollbar="true" в макете xml:

     <com.handmark.pulltorefresh.library.PullToRefreshListView
          android:id="@+id/news_list_listView_main"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:background="#EEE"
          android:cacheColorHint="#00000000"
          android:divider="#00000000" 
          android:dividerHeight="5dp"
          android:layout_marginTop="2dp"  
          android:paddingLeft="1dp"
          android:paddingRight="1dp"
          android:smoothScrollbar="true"/>
    
  2. а потом,

     myRefreshScrollView.getRefreshableView().smoothScrollToPosition(lastScollCount);
    
person Eddy    schedule 31.10.2014