如何在android中滚动时获取scrollview位置

时间:2013-12-03 14:18:53

标签: android scrollview

我的xml,父级和子级滚动视图中有两个滚动视图。我们希望根据子滚动视图滚动父滚动视图。

以下是我的xml设计:

 <RelativeLayout android:id="@+id/layout"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"
   android:background="@drawable/bg" >

     <RelativeLayout android:id="@+id/r1"
      android:layout_width="fill_parent"
      android:layout_height="66dp" >

           <TextView android:id="@+id/t1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="this is navbar"
            android:textColor="#000000"
            android:textSize="22dp"
            android:gravity="center"/>
       </RelativeLayout>


   <RelativeLayout android:id="@+id/childlayout"
     android:layout_height="500dp"
     android:layout_width="fill_parent"
     android:layout_below="@+id/r1">
       <com.example.samplescrollview.ObservableScrollView  android:id="@+id/s2"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent">

        <RelativeLayout android:id="@+id/r3"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            android:background="@drawable/bg">

           <ListView android:id="@+id/list"
           android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            </ListView>
          </RelativeLayout>

        </com.example.samplescrollview.ObservableScrollView> 
       </RelativeLayout>
       </RelativeLayout> 

我们希望根据子滚动视图的滚动更改导航栏颜色,我们可以在下面的屏幕截图中观察到。为此,我们实现了以下代码。

 public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) {

                if(scrollView == scrollView1) {
                    Log.e("this is..","scrolll111111111");
                    Log.e("x="+x,"y="+y);
                    scrollView2.scrollTo(x,y);

                } else if(scrollView == scrollView2) {
                     scrollView1.scrollTo(x,y);
                    Log.e("this is..","scrolll2222222");
                    Log.e("x="+x,"y="+y);
                }
        }

enter image description here

我们还使用scrollBy(),getScrollX(),getScrollY()来获取子滚动视图位置,但不会在父滚动视图中生效。

最后,我们想要通过滚动子滚动视图来更改透明的导航栏颜色。

还有其他可能的方法来完成这项任务。

0 个答案:

没有答案