我的布局包含一个EditText和一个WebView的子类:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/addressbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
/>
<com.android.ibrowser.myWebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/browser"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
当用户向下滚动WebView时,我希望EditText向上移动并消失,所以我在WebView中覆盖onScrollChanged方法:
protected void onScrollChanged (int l, int t, int oldl, int oldt){
super.onScrollChanged(l, t, oldl, oldt);
if (addressBar.getBottom() > 0){
AnimationSet animation = new AnimationSet(true);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0
, -t + oldt, -t + oldt);
translateAnimation.setDuration(100);
animation.addAnimation(translateAnimation);
animation.setFillAfter(true);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation arg0) {
addressBar.clearAnimation();
// Change view to state B by modifying its layout params and scroll
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
});
addressBar.startAnimation(animation);
}
}
但实现的效果是EditText移动到顶部但立即返回其原始位置。你怎么看?
答案 0 :(得分:2)
你必须致电:
translateAnimation.setFillEnabled(true);
在
translateAnimation.setFillAfter(true);
它有效。
答案 1 :(得分:0)
尝试添加translateAnimation.setFillAfter(true)
。