CoordinatorLayout с поведением NestedScrollView

Я новичок в программировании Android, и у меня возникла проблема с пользовательским интерфейсом. Моя цель - достичь чего-то близкого к этому: желаемый макет

Я подумал об этом и решил сделать это с помощью CoordinatorLayout, AppBarLayout / CollapsingToolbarLayout и NestedScrollView с CardView. Звучит отлично для этой проблемы, правда?

С моим настоящим XML у меня уже есть панель инструментов, изображение и функция прокрутки.

Однако функция прокрутки не на 100%, как я хотел. Во-первых, прокрутку вниз невозможно, так как в середине экрана (вероятно, из-за android:layout_height = "275dp") прокрутка возможна только вверх. (и, конечно, свернуть панель инструментов). Моя основная цель - «открыть» изображение на весь экран. Вы хоть представляете, как мне добиться такого поведения? Может быть, контролировать% в .java?

Также есть одна досадная ошибка, но я могу пока оставить ее, просто попытайтесь помочь, если она также дает вам некоторую ОКР.

Я попытался добавить свойство прозрачности к своему LinearLayout, но это не сработало.

Обычная прокрутка: Текущая прокрутка

Ошибка 'панель', так как она близка к разрушению: багги изображение панели

Мой весь XML:

<android.support.design.widget.CoordinatorLayout
    xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    android:id = "@+id/annonce.main.coordinator"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:ignore = "RtlHardcoded"
    >

    <android.support.design.widget.AppBarLayout
        android:id = "@+id/flexible.example.appbar"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:theme = "@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        >

        <android.support.design.widget.CollapsingToolbarLayout
            android:id = "@+id/flexible_example_collapsing"
            android:layout_width = "match_parent"
            android:layout_height = "275dp"
            app:title = "Mosteiro dos Jerónimos"
            app:expandedTitleMarginBottom = "94dp"
            app:layout_scrollFlags = "scroll|exitUntilCollapsed"
            app:expandedTitleTextAppearance = "@style/CollapsingTextAppearance.Inverse"
            app:contentScrim = "?attr/colorPrimary"
            >

            <ImageView
                android:layout_width = "fill_parent"
                android:layout_height = "match_parent"
                android:src = "@drawable/mosteiro_dos_jeronimos"
                android:scaleType = "centerCrop"
                />

            <android.support.v7.widget.Toolbar
                android:id = "@+id/flexible.example.toolbar"
                android:layout_width = "match_parent"
                android:layout_height = "30dp"
                android:background = "@null"
                app:layout_collapseMode = "pin"
                app:title = "Mosteiro dos Jerónimos"
                style = "@style/ToolBarWithNavigationBack"
                />
        </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"
        android:scrollbars = "none"
        app:behavior_overlapTop = "78dp"
        app:layout_behavior = "@string/appbar_scrolling_view_behavior"
        >

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

            <android.support.v7.widget.CardView
                android:id = "@+id/flexible.example.cardview"
                android:layout_width = "match_parent"
                android:layout_height = "match_parent"
                app:contentPaddingBottom = "16dp"
                app:contentPaddingLeft = "16dp"
                app:contentPaddingRight = "16dp"
                app:cardCornerRadius = "16dp"
                app:cardBackgroundColor = "@android:color/white"
                app:cardElevation = "4dp"
                >

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

                    <View
                        android:id = "@+id/myRectangleView"
                        android:layout_width = "40dp"
                        android:layout_height = "4dp"
                        android:layout_gravity = "center"
                        android:layout_marginTop = "4dp"
                        android:background = "@drawable/rectangle"/>

                    <TextView
                        android:layout_width = "match_parent"
                        android:layout_height = "wrap_content"
                        android:text = "Lisboa"
                        android:textAppearance = "@style/TextAppearance.Header"
                        style = "@style/TextComponent.ItemRow"
                        />

                    <TextView
                        android:layout_width = "match_parent"
                        android:layout_height = "wrap_content"
                        android:fontFamily = "sans-serif-light"
                        android:lineSpacingExtra = "8dp"
                        android:textSize = "16sp"
                        android:text = "@string/lorem"
                        />
                </LinearLayout>
            </android.support.v7.widget.CardView>
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>

    <android.support.design.widget.FloatingActionButton
        android:id = "@+id/flexible.example.fab"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginRight = "32dp"
        android:elevation = "8dp"
        android:src = "@drawable/ic_adb_24dp"
        app:layout_anchor = "@id/flexible.example.cardview"
        app:layout_anchorGravity = "top|right|end"
        tools:ignore = "RtlHardcoded"
        />
</android.support.design.widget.CoordinatorLayout>
1
0
562
1

Ответы 1

Я думаю, что ваш макет в порядке (работает на моей стороне), но, возможно, поведение, которое вы хотите, больше похоже на поведение нижнего листа.

Вы смотрели на это?

В основном это позволит вам использовать что-то вроде карт Google, так что вы сможете прокручивать, как хотите.

Вот руководство, чтобы лучше понять, на что это похоже.

Пожалуйста, дайте мне знать, если это то, что вы ищете.

Другие вопросы по теме