2015-06-16 73 views
2

我想在我的应用程序中使用类似于@chrisbanses cheesesquare(https://github.com/chrisbanes/cheesesquare)的布局。CollapsingToolbarLayout /工具栏保证金缺陷

Nexus 5,6的一切都很棒。但是当您在其他设备(如Samsung S6,Sony 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> 

这是我的布局。我找不到解决这个问题的方法。您可以尝试在手机上运行Cheesesquare,例如带有5.0.2 Android的Samsung S。我也测试过索尼设备。一样。 Nexus手机都可以。

你有什么想法如何解决这个问题吗?

我使用com.android.support:design:22.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); 

编辑: 谷歌更新支持库。该错误在22.2.1版本中得到修复。只需更新支持库并使用最新版本,一切都会好起来的。

+0

这个工程,但问题是,它清除了我在我的工具栏中的所有菜单项像导航抽屉的图标。有什么建议么? – qazimusab

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); 
    } 
+0

这只适用于三星。如果您检查其他手机,则无法使用 - 例如Sony Z3,OnePlus One。仅为一个创建修复很容易。好消息是Google解决了这个问题,我们很快会看到更新的支持库。 – adek

相关问题