web-dev-qa-db-ja.com

新しいAndroid AppBarLayoutとツールバーに関する設計ライブラリのバグ

私は新しいAndroidこの例に基づいた設計ライブラリ chrisbanes/cheesesquare githubおよび here を使用しています

この例を実行しましたが、CheeseDetailActivity内のツールバーに問題があります。ツールバーは表示されるべきではありません。以下の画像をご覧ください。

最初の画像では、ツールバーが正しく表示されていないことがわかります。

enter image description here

2番目の画像では、ツールバーは正しく表示されていますが、通知バーは白であることがわかります。これは、actiivty_detail.xmlからAndroid:fitsSystemWindows="true"Android.support.design.widget.CoordinatorLayoutから削除したために発生します

enter image description here

fitsSystemWindowsは真である必要があり、問題はAndroid.support.design.widget.AppBarLayoutに関連していると思いますが、この問題を解決する方法がわかりません。 marginTopと同じ高さのnotificationBarを試しましたが、うまくいきませんでした。

どんな提案も大歓迎です:)

これはactivity_detail.xmlの一部です:

<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/main_content"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fitsSystemWindows="true">

<Android.support.design.widget.AppBarLayout
    Android:id="@+id/appbar"
    Android:layout_width="match_parent"
    Android:layout_height="@dimen/detail_backdrop_height"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    Android:fitsSystemWindows="true">

    <Android.support.design.widget.CollapsingToolbarLayout
        Android:id="@+id/collapsing_toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        Android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginStart="48dp"
        app:expandedTitleMarginEnd="64dp">

        <ImageView
            Android:id="@+id/backdrop"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:scaleType="centerCrop"
            Android:fitsSystemWindows="true"
            app:layout_collapseMode="parallax" />

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_collapseMode="pin" />

    </Android.support.design.widget.CollapsingToolbarLayout>

</Android.support.design.widget.AppBarLayout>
30
Ultimo_m

次のように、appフォルダー内のDesign Libraryを新しいバージョンbuild.gradleファイルで変更します。

'com.Android.support:design:22.2.1'をコンパイルします

+ AndroidDevelopers で更新

私は次のような出力を得ました:

enter image description here

それはあなたを助けます。

ありがとう:)

これはcom.Android.support:design:22.2.0のバグのようです。これは修正され、将来のリリースとしてマークされます。だから、それがすぐに来ることを願っています。問題のあるリンク: https://code.google.com/p/Android/issues/detail?id=17524 および https://code.google.com/p/Android/issues/detail?id = 175069

8
Zokran

windowActionBarとwindowNoTitleで同じ問題をスタイルに入れて、私の問題を決定しました。

<style name="AppTheme.base" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
       <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
1
Levi Saturnino

同じ問題があり、ツールバーが21を超えるAPIレベルで間違って表示されていました。supportActionBar()としてAndroid.support.v7.widget.Toolbarを使用していました。以下のコンテンツは断片的です。写真を参照してください: アプリケーションの開始時に、ツールバーが間違って表示されている および Android.support.design.widget.CollapsingToolbarLayoutを折りたたむと、画像が完全に非表示にならない

ツールバーが配置されているビューのルート要素にAndroid:fitsSystemWindows = "true"属性を追加すると、これを解決しました。

現在: ツールバーは正常に表示されます画像は完全に非表示になります

0

API 21の回避策を次に示します。

 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Lollipop) {
    marginResult = 0;
    int resourceId = getResources().getIdentifier(getString(R.string.identifier_status_bar_height), getString(R.string.identifier_dimen), getString(R.string.identifier_Android));    
    if (resourceId > 0) {
        marginResult = getResources().getDimensionPixelSize(resourceId)*2;
     }
    CollapsingToolbarLayout.LayoutParams params = (CollapsingToolbarLayout.LayoutParams) mToolbar.getLayoutParams();
    params.topMargin -= marginResult;
    mToolbar.setLayoutParams(params);}
0
Penzzz