7

新しい Android Design Support Librar ( http://android-developers.blogspot.com.ar/2015/05/android-design-support-library.html ) で奇妙な問題が発生しました。ToolBar とともに AppBarLayout に追加のコンテンツ (LinearLayout など) を配置し、そのコンテンツの表示を切り替えると、フラグメントを切り替えると、フラグメント コンテンツの上部にデッド スペースが表示されます。

コンテンツの表示が切り替えられたときに、AppBarLayout が親の CoordinatorLayout のサイズを正しく変更していないようです。CoordinatorLayout を DrawerLayout にラップしました。表示されているフラグメントに応じて、AppBarLayout の余分な LinearLayout の可視性を切り替えたいと考えています。

MainActivity の main.xml ファイルは次のとおりです。

<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

<android.support.design.widget.CoordinatorLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent">

        <android.support.design.widget.AppBarLayout
                android:id="@+id/appBarLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"/>

            <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:gravity="center_vertical"">

                <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="start"
                        android:text="Hello"/>
            </LinearLayout>

        </android.support.design.widget.AppBarLayout>

        <FrameLayout
           app:layout_behavior="@string/appbar_scrolling_view_behavior"
                android:id="@+id/content_frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

    </android.support.design.widget.CoordinatorLayout>

  <android.support.design.widget.NavigationView
            android:id="@+id/navigation"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:menu="@menu/drawer"/>

</android.support.v4.widget.DrawerLayout>
4

1 に答える 1

2

サポート デザイン ウィジェットを使用して同様の問題が発生しました。DrawerLayout 内に CoordinatorLayout があり、CoordinatorLayout 内に AppBarLayout がありました。AppBarLayout 内に 2 つのツールバーがありました。私の目的は、recyclerview コンテンツを表示する ViewPager を含むツールバーを表示することでした。アイテムを選択するときに、ツールバーを切り替えたいと思っていました。つまり、一方のツールバーを非表示にし、もう一方を表示したり、その逆にしたりしました。コンテンツを上にスクロールすると、ツールバーが画面の上部から押し出されます。方向を変更するとツールバーのスペースが表示されることを除いて、すべてが完全に機能しました。私はそれを取り除くために考えられるすべてのハックを試みましたが、成功しませんでした. その後、この投稿に出くわし、サポート ライブラリのバグであることに気付きました。次に、FrameLayout を AppBarLayout に配置してから、2 つのツールバーを FrameLayout 内に配置し、スペースを空けようとしました。私が意図したとおりにすべてが機能するようになりました。GONE ツールバーはなくなり、方向を変更しても、表示されているツールバーのみが表示されます。

これが誰かに役立つことを願っています。

于 2015-09-29T14:54:56.413 に答える