Отобразить липкую кнопку над панелью инструментов - PullRequest
1 голос
/ 06 марта 2019

У меня есть следующий макет:

<LinearLayout
        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:orientation="vertical"
        android:layout_width="match_parent" android:layout_height="match_parent">

    <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            app:theme="@style/Toolbar"/>

    <com.sample.android.scrolltricks.ObservableScrollView
            android:id="@+id/scroll_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

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

                <ImageView style="@style/Item"
                           android:scaleType="centerCrop"
                           android:src="@drawable/london_flat"
                           tools:ignore="contentDescription"/>

                <View android:id="@+id/placeholder"
                      android:layout_width="match_parent"
                      android:layout_height="@dimen/sticky_height"/>

                <View style="@style/Item.Bottom"/>
                <View style="@style/Item.Bottom.Alt"/>
                <View style="@style/Item.Bottom"/>
                <View style="@style/Item.Bottom.Alt"/>
                <View style="@style/Item.Bottom"/>
                <View style="@style/Item.Bottom.Alt"/>

            </LinearLayout>

            <Button android:id="@+id/sticky" style="@style/Sticky"/>

        </FrameLayout>

    </com.sample.android.scrolltricks.ObservableScrollView>

</LinearLayout>

А это код для отображения кнопки при прокрутке:

override fun onScrollChanged(scrollY: Int) {
        sticky.translationY = Math.max(
            placeholder.top - resources.getDimension(R.dimen.sticky_height) / 2,
            scrollY.toFloat() - 65
        )
    }

Липкая кнопка отображается под панелью инструментов, я хочу показать ее частично над панелью инструментов. (scrollY.toFloat() - 65)

Вы знаете, как ее решить?

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Это ссылка на макет, где я решил проблему: https://github.com/Ali-Rezaei/Scrolltricks/blob/master/app/src/main/res/layout/activity_main.xml

1 голос
/ 06 марта 2019

К сожалению, в вашем макете вы не можете вывести это Button выше ScrollView. Ваш Button является потомком FrameLayout, который является потомком самого ScrollView, так что его область рисования ограничена границами родителя.

Лучше решать такие задачи, обернув все в CoordinatorLayout, а затем применив пользовательский CoordinatorLayout.Behavior к View, для которого требуется определенное позиционирование.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...