我的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);
}
}
我们还使用scrollBy(),getScrollX(),getScrollY()来获取子滚动视图位置,但不会在父滚动视图中生效。
最后,我们想要通过滚动子滚动视图来更改透明的导航栏颜色。
还有其他可能的方法来完成这项任务。