nat*_*rio 17 android android-layout android-design-library android-coordinatorlayout
我使用新的设计库有一个非常标准的布局:
<AppBarLayout>
<CollapsingToolbarLayout>
<ImageView/>
<Toolbar/>
</CollapsingToolbarLayout>
</AppBarLayout>
<android.support.v4.widget.NestedScrollView/> <!-- content here -->
Run Code Online (Sandbox Code Playgroud)
我想要做的是完全隐藏整个AppBarLayout程序,暂时摆脱Toolbar它及其崩溃功能.
所以我称之为:
private void disableCollapsing() {
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
p.setScrollFlags(0);
collapsingToolbarLayout.setLayoutParams(p);
}
Run Code Online (Sandbox Code Playgroud)
禁用折叠行为(效果很好),最后这个:
@Override
public void hide() {
final AppBarLayout layout = (AppBarLayout) findViewById(R.id.appbar);
layout.animate().translationY(-layout.getHeight())
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
layout.setVisibility(View.GONE);
}
}).start();
}
Run Code Online (Sandbox Code Playgroud)
我将AppBarLayout转换为顶部(工作顺利),并且在动画集的末尾是可见性View.GONE.
在动画结束时,无论我是否也将可见性设置为GONE,我都无法获得之前占用的空间AppBarLayout.我的NestedScrollView仍然局限在屏幕的下半部分,好像AppBarLayout仍在那里(不是).我该如何解决?
隐藏之前:

隐藏后(AppBar翻译到顶部):

如您所见,顶部空间是空的,无法访问.滚动视图在其之前的边距内滚动,就好像可见性变化不是由CoordinatorLayout.
我试过打电话coordinator.requestLayout(),没有成功.
我也尝试将AppBarLayout设置app:anchor为我的NestedScrollView,但这会搞砸 - 滚动视图最终会在隐藏之前占据整个屏幕.
我想Behavior在进入这个隐藏的AppBar模式时在滚动视图上设置自定义,但我无法开始.
小智 19
是的,这看起来像一个错误,我解决了这个问题,我的应用程序将appbar高度设置为0:
android.support.design.widget.AppBarLayout appbar = (android.support.design.widget.AppBarLayout) findViewById(R.id.appbar);
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appbar.getLayoutParams();
lp.height = 0;
appbar.setLayoutParams(lp);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8956 次 |
| 最近记录: |