2

@chrisbanses Cheesesquare ( https://github.com/chrisbanes/cheesesquare )に似たレイアウトをアプリで使用したいと考えています。

すべてが Nexus 5,6 で問題なく動作します。ただし、Samsung S6、Sony 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>

これが私のレイアウトです。これを修正する方法が見つかりません。5.0.2 Android を搭載した Samsung S などの電話で Cheesesquare を実行してみることができます。ソニーのデバイスもテストしました。同じ。Nexus スマートフォンは問題ありません。

これを修正する方法はありますか?

com.android.support:design:22.2.0 (最新バージョン) を使用しています

4

2 に答える 2

3

わかった。確認が取れました。これは、Design Support Library 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バージョンで修正されました。サポート ライブラリを更新して最新バージョンを使用するだけで、すべて問題なく動作します。

于 2015-06-16T20:58:25.247 に答える