我正在尝试使用图像模式实现灵活空间本教程 http://blog.grafixartist.com/toolbar-animation-with-android-design-support-library/.
一切正常。
请注意 AppBarLayout 的高度定义为 192dp。
我想将高度设置为屏幕的 1/3,以匹配这个谷歌示例的模式在这里 http://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0B6Okdz75tqQscXNQY3dNdVlYeTQ/patterns-scrolling-techniques_flex_space_image_xhdpi_003.webm.
以下是 Activity 的 onCreate 中的代码(布局 xml 与教程中的完全相同):
AppBarLayout appbar = (AppBarLayout)findViewById(R.id.appbar);
float density = getResources().getDisplayMetrics().density;
float heightDp = getResources().getDisplayMetrics().heightPixels / density;
appbar.setLayoutParams(new CoordinatorLayout.LayoutParams(LayoutParams.MATCH_PARENT, Math.round(heightDp / 3)));
但由于某种原因,结果并不是我所期望的。使用此代码我根本看不到应用栏。 (如果没有代码,高度将按预期显示,但它来自 XML,无法动态设置)。
改为这样做:
AppBarLayout appbar = (AppBarLayout) findViewById(R.id.appbar);
float heightDp = getResources().getDisplayMetrics().heightPixels / 3;
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appbar.getLayoutParams();
lp.height = (int)heightDp;
在你的原始代码中,我认为你对 1/3 屏幕的计算是错误的,但你仍然应该看到一些东西。可能是 setLP() 中的 LayoutParams.MATCH_PARENT 未正确导入。始终首先声明视图类型,即 CoordinatorLayout.LayoutParams 只是为了确保。否则,例如可以很容易地使用 Framelayout.LayoutParams。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)