1

我在 PullToRefreshScrollview 中有一个 Listview,FrameLayout。我正在将一个片段加载到框架布局中。数据正在使用惰性适配器加载到列表视图中。加载列表视图时,我可以看到片段/框架布局。但是 Scrollview 在数据加载到 listview 后会自动滚动到 listview 的位置,并且 framelayout 不可见。如何将滚动视图滚动到顶部?请帮我。提前致谢

<?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>
4

2 回答 2

5

这是我采取的方法

假设您像这样引用了 PullToRefreshScrollView

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

要获取 ACTUAL ScrollView 对象,您需要像这样调用 getRefreshableView()

ScrollView myScrollView =  myRefreshScrollView.getRefreshableView();

然后滚动这个对象

myScrollView.scrollTo(0,0);

或者

myScrollView.smoothScrollTo(0,0)
于 2013-09-26T20:29:11.710 回答
0

有 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);
    
于 2014-10-31T12:57:38.123 回答