在我的应用程序中,我得到了一个activity,在顶部有某种类型的actionbar,在它下面有listview。我想要做的是在列表中向上滚动,这样它就会隐藏起来,然后,当列表向下滚动时,它应该会随着列表一起向下滚动,就像它刚刚越过屏幕的上边一样。如何实现此功能?
发布于 2014-10-15 07:02:26
您要查找的内容名为Quick Return pattern,它应用于Action Bar。Google IO 2014应用程序就是这样使用的。我在我的一个应用程序中使用它,你可以查看那个谷歌应用程序的source code,看看他们是如何获得它的。在BaseActivity类中,您可以获得所需的内容,阅读代码并提取特定的功能。享受编码!:)
发布于 2014-11-21 22:43:42
我确信这不是最好的解决方案。但我还没找到更好的。希望这会对你有所帮助。
static boolean scroll_down;
...
mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (scroll_down) {
actionBar.hide();
} else {
actionBar.show();
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 70) {
//scroll down
scroll_down = true;
} else if (dy < -5) {
//scroll up
scroll_down = false;
}
}
});
发布于 2015-05-17 16:18:18
我有一个想法,那是个好主意。
listView.setOnScrollListener(new OnScrollListener() {
int mLastFirstVisibleItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_FLING:
if (view.getId()==lv_searchresult_results.getId()){
final int currentFirstVisibleItem=lv_searchresult_results.getFirstVisiblePosition();
if(currentFirstVisibleItem>mLastFirstVisibleItem){
ObjectAnimator.ofFloat(toolbar, "translationY", -toolbar.getHeight()).start();
else if(currentFirstVisibleItem<(mLastFirstVisibleItem)){
ObjectAnimator.ofFloat(toolbar, "translationY", 0).start();
}
mLastFirstVisibleItem= currentFirstVisibleItem;
}
if(lv_searchresult_results.getLastVisiblePosition() == myAdapter.getListMap().size()){
if(myAdapter.getListMap().size() < allRows&&!upLoading){
}
}
break;
case OnScrollListener.SCROLL_STATE_IDLE:
if (view.getFirstVisiblePosition()<=1){
ObjectAnimator.ofFloat(toolbar, "translationY", 0).start();
}
if(lv_searchresult_results.getLastVisiblePosition() == myAdapter.getListMap().size()){
if(myAdapter.getListMap().size() < allRows&&!upLoading){
}
}
break;
https://stackoverflow.com/questions/13559275
复制相似问题