public static boolean couldScroll(AppBarLayout appBarLayout) { if (appBarLayout == null) return false; boolean couldScroll = false; for (int i = 0; i < appBarLayout.getChildCount(); i++) { View child = appBarLayout.getChildAt(i); if (couldScrollChild(child)) { couldScroll = true; break; } } return couldScroll; }
@Override protected void initCreate(Bundle savedInstanceState) { layoutParams = (AppBarLayout.LayoutParams) appBarLayout.getChildAt(0).getLayoutParams(); navigationView.setNavigationItemSelectedListener(this); toolbar.setTitle(getString(R.string.dbmz_title)); setSupportActionBar(toolbar); mPresenter.switchId(MainPresenterImpl.FIRST_FRAGMENT); }
final int getMinimumHeightForVisibleOverlappingContent(AppBarLayout bar) { int topInset = 0; int minHeight = ViewCompat.getMinimumHeight(bar); if (minHeight != 0) { return minHeight * 2 + topInset; } else { int childCount = bar.getChildCount(); return childCount >= 1 ? ViewCompat.getMinimumHeight(bar.getChildAt(childCount - 1)) * 2 + topInset : 0; } }
@Override public boolean onMeasureChild(CoordinatorLayout parent, AppBarLayout child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) { boolean ret = super.onMeasureChild(parent, child, parentWidthMeasureSpec, widthUsed, parentHeightMeasureSpec, heightUsed); if (titleHeight == 0 && child.getChildCount() >= 1) { titleHeight = child.getChildAt(0).getMinimumHeight(); } if (pinHeight == 0 && child.getChildCount() >= 2 ) { pinHeight = child.getChildAt(1).getMeasuredHeight(); } if (minVerticalOffset == 0) { minVerticalOffset = -(child.getMeasuredHeight() - titleHeight - pinHeight); child.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { currentVerticalOffset = verticalOffset; if (currentVerticalOffset != minVerticalOffset) { scrollToPositionZero(currentScrollTarget); } } }); } return ret; }
@Override public void check(View view, NoMatchingViewException noViewFoundException) { CollapsingToolbarLayout collapsingToolbarLayout = null; Toolbar toolbar = null; AppBarLayout appBarLayout = (AppBarLayout) view; for (int i = 0; i < appBarLayout.getChildCount(); i++) { if(appBarLayout.getChildAt(i) instanceof CollapsingToolbarLayout) { collapsingToolbarLayout = (CollapsingToolbarLayout) appBarLayout.getChildAt(i); } } if(collapsingToolbarLayout == null) { throw new IllegalStateException("Current only AppBarLayouts with CollapsingToolbarLayout are supported."); } for (int i = 0; i < collapsingToolbarLayout.getChildCount(); i++) { if(collapsingToolbarLayout.getChildAt(i) instanceof Toolbar) { toolbar = (Toolbar) collapsingToolbarLayout.getChildAt(i); } } if(toolbar == null) { throw new IllegalStateException("Current only CollapsingToolbarLayout with support Toolbar are supported."); } boolean isFullCollapsed = appBarLayout.getBottom() - toolbar.getHeight() == 0; isFullCollapsed |= appBarLayout.getBottom() - toolbar.getHeight() - EspResourceTool.getStatusBarHeight(view.getContext()) == 0; ViewMatchers.assertThat("is full collapsed", isFullCollapsed, is(true)); } };