CollapsingToolbarLayout /工具栏边距错误

时间:2015-06-16 12:20:13

标签: android toolbar android-collapsingtoolbarlayout

我想在我的应用程序中使用类似于@chrisbanses cheesesquare(https://github.com/chrisbanes/cheesesquare)的布局。

Nexus 5,6上的一切都很棒。但是当你在三星S6,索尼Z3 Compact等其他设备上进行测试时,工具栏上的按钮都不可见。

enter image description here

<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(最新版本)

2 个答案:

答案 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);
    }