2015-06-16 125 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

相關問題