[英]How to hide toolbar while scrolling listview up? (Just like google play store)
好的,所以隱藏動作欄是可行的。 但是,我們如何在活動中隱藏(新引入的)工具欄?
我正在創建一個主題為theme.apcompat.light.noactionbar的活動的應用程序(隱藏操作欄),我在其下方放置了一個帶有slidingtablayout的工具欄。 下面是我的列表視圖。
我想要的是在滾動列表視圖時隱藏工具欄。 但滑動布局應保持在那里。 如果我在列表視圖的中間向下滾動,則工具欄應該再次可見。
請使用Design Support Library
在此處查看我的最新答案:
將ActionBar隱藏在RecyclerView / ListView onScroll上
請參閱https://stackoverflow.com/a/26547550/950427和https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ ui / BaseActivity.java 。
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer);
mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar);
mToolbar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= 16) {
mToolbar.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
mToolbar.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
mToolbar.animate().translationY(-mToolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();
}
});
來自: http : //pastebin.com/yeMX3VYP
https://stackoverflow.com/a/17767691/950427
我最近想要相同的功能,這對我來說非常有用:
當用戶向上滾動時,ActionBar將被隱藏,以便為用戶提供整個屏幕以便進行工作。
當用戶向下滾動並放開時,ActionBar將返回。
getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
listView.setOnScrollListener(new OnScrollListener() {
int mLastFirstVisibleItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) { }
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (view.getId() == listView.getId()) {
final int currentFirstVisibleItem = listView.getFirstVisiblePosition();
if (currentFirstVisibleItem > mLastFirstVisibleItem) {
// getSherlockActivity().getSupportActionBar().hide();
getSupportActionBar().hide();
} else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
// getSherlockActivity().getSupportActionBar().show();
getSupportActionBar().show();
}
mLastFirstVisibleItem = currentFirstVisibleItem;
}
}
});
使用以下代碼:
ViewCompat.setNestedScrollingEnabled(listView, true);
對於recyclerView我管理它使它像這樣:
public class FragmentsOnScrollListener extends RecyclerView.OnScrollListener {
private final MainActivity mainActivity;
private final View bothToolbarLayouts;
private int approxToolbarHeight;
public FragmentsOnScrollListener(MainActivity activity) {
mainActivity = activity;
bothToolbarLayouts = mainActivity.getBothToolbarLayouts();
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
approxToolbarHeight += dy;
bothToolbarLayouts.animate().translationY(-approxToolbarHeight).setInterpolator(new AccelerateInterpolator()).start();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.