我想在我的应用程序中使用类似于@chrisbanses cheesesquare(https://github.com/chrisbanes/cheesesquare)的布局。
Nexus 5,6上的一切都很棒。但是当你在三星S6,索尼Z3 Compact等其他设备上进行测试时,工具栏上的按钮都不可见。
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/backdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
android:src="@drawable/default_vehicle"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
这是我的布局。我找不到解决这个问题的方法。您可以尝试在三星S和5.0.2 Android手机上运行Cheesesquare。我也测试了索尼设备。相同。 Nexus手机没问题。
你知道如何解决这个问题吗?
我正在使用com.android.support:design:22.2.0(最新版本)
答案 0 :(得分:3)
行。我有确认。这是设计支持库22.2.0中的错误。 更多信息: https://code.google.com/p/android/issues/detail?id=176647
如果您在Google发布修补程序之前知道任何解决方法,我会很高兴。
工具栏和缺少按钮问题(错误的位置)
有一种解决方法if (Build.VERSION.SDK_INT != 21) return;
final int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
final int result = (resourceId > 0) ? getResources().getDimensionPixelSize(resourceId) * 2 : 0;
final CollapsingToolbarLayout.LayoutParams params =
(CollapsingToolbarLayout.LayoutParams) toolbar.getLayoutParams();
params.topMargin -= result;
toolbar.setLayoutParams(params);
编辑: Google更新了支持库。此错误已在 22.2.1 版本中修复。只需更新支持库并使用最新版本,一切都会好的。
答案 1 :(得分:1)
if ("samsung".equals(Build.MANUFACTURER) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Toolbar toolbar = getToolbar();
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
lp.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, -47, getResources().getDisplayMetrics());
toolbar.setLayoutParams(lp);
}