29

概要

マテリアル デザインで説明されているScrolling Techniquesの 1 つ、Flexible space with overload contentを実装しようとしています。

コンテンツが重複する柔軟なスペース

コンテンツはアプリ バーに重ねることができます。

行動:

アプリ バーの開始位置は、コンテンツの後ろに配置する必要があります。上にスクロールすると、アプリ バーは、コンテンツがオーバーラップしなくなるまで、コンテンツよりも速くスクロールする必要があります。所定の位置に固定されると、アプリ バーが持ち上がり、コンテンツを下にスクロールできるようになります。

https://www.google.co.in/design/spec/patterns/scrolling-techniques.html#scrolling-techniques-scrolling


問題

ただし、問題は、AppBar のタイトルが展開されると下にスクロールし、重なっているコンテンツの下に隠れることです。

ここでは、重なっている CardView の下にツールバーが隠されています。 アプリバーが展開されたとき

アプリバーが折りたたまれると、ツールバーとタイトルが下から上にスライドします。 折りたたんだとき

コード

これが私のコードです:

活動-main.xml

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

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            ...
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:layout_gravity="top"
                android:background="?attr/colorPrimary"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ...

MainActivity の onCreate 関数にもこれらを追加しました

    setSupportActionBar(toolbar);

    collapsingToolbarLayout.setTitle("App Name");

アプリバーが展開または折りたたまれているかどうかに関係なく、ツールバー (後で追加するタイルとその他のコンテンツを含む) を一番上に表示したいと考えています。

ドキュメントを読み、多くの投稿やチュートリアルを読み、多くのビデオを見ましたが、実際の解決策や関連する解決策をまったく見つけることができませんでした。

これを修正する方法について誰かがアイデアを持っている場合は、提案してください。助けてくれてありがとう。

4

4 に答える 4

77

同様の問題レポートのコメントで答えを見つけたとき、私は自分で解決策を探していました。

基本的に、次のようsetTitleEnabled()に呼び出します。CollapsingToolbarLayout

CollapsingToolbarLayout.setTitleEnabled(false);

これを xml に追加することで、これを xml でも行うことができますCollapsingToolbarLayout

app:titleEnabled="false"

に設定するとfalse、目的の動作が得られます。タイトルは画面の上部に固定されたままです。

自体は実際にはすでに上部にありましたが、これにより、 の下部とToolbarの間で変換されるのではなく、タイトルもそこにとどまります。CollapsingToolbarLayoutToolbar

于 2015-10-19T00:27:03.453 に答える
5

Toolbarタグ内に以下のコードを追加することでこれを達成しました。

app:layout_collapseMode="pin"
于 2017-07-10T07:44:27.050 に答える