有自定义列表视图,底部有一个线性布局。因此,在滚动列表时,操作栏和底部布局应该在滚动列表视图时隐藏,以便我们可以全屏查看列表。我正在使用动画来隐藏/显示布局,但是当列表到达顶部时会出现闪烁。下面是使用操作栏隐藏和显示布局的代码。
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
final int lastItem = firstVisibleItem + visibleItemCount;
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
if(mViews.lists.getFirstVisiblePosition() == 0 && (mViews.lists.getChildCount() == 0 || mViews.lists.getChildAt(0).getTop() == 0)){
actionBar.show();
// mViews.linear.startAnimation(animShow);
// mViews.linear.setVisibility(View.VISIBLE);
TranslateAnimation animate = new TranslateAnimation(0,0,2000,0 );
animate.setDuration(100);
animate.setFillBefore(true);
animate.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
mViews.linear.startAnimation(animation);
}
@Override
public void onAnimationEnd(Animation animation) {
mViews.linear.clearAnimation();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mViews.linear.setVisibility(View.VISIBLE);
}else {
if (actionBar != null) {
actionBar.hide();
// mViews.linear.startAnimation(animHide);
//mViews.linear.setVisibility(View.GONE);
TranslateAnimation animate = new TranslateAnimation(0,0,0,0);
animate.setDuration(100);
animate.setFillAfter(true);
mViews.linear.startAnimation(animate);
animate.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
mViews.linear.startAnimation(animation);
}
@Override
public void onAnimationEnd(Animation animation) {
mViews.linear.clearAnimation();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mViews.linear.setVisibility(View.GONE);
}
}
}
我已经走了但我没有找到解决我问题的任何解决方案。请帮忙。
答案 0 :(得分:0)
https://mzgreen.github.io/2015/02/15/How-to-hideshow-Toolbar-when-list-is-scroling(part1)/
你必须绑定你的视图,然后使用
FrameLayout.LayoutParams lp =(FrameLayout.LayoutParams)yourView.getLayoutParams();
yourView.animate()。translationY(mFabButton.getHeight()+ fabBottomMargin).setInterpolator(new AccelerateInterpolator(2))。start();
请参阅教程,并在下面找到github代码