滚动视图底部的粘滞按钮

时间:2019-09-12 08:23:13

标签: android kotlin mobile

我想要一些粘滞按钮,当用户滚动时该粘滞按钮始终可见,但是到达底部时是固定的。我的问题是,当用户滚动并到达底部时,该按钮会覆盖一些文本。

这就是我所拥有的。版本错误。在这种情况下,该按钮不允许看到一些文本。

enter image description here

这就是我想要的。该按钮到达终点时,您会看到类似的东西。

enter image description here

这是我的布局。在这里,我有一些可滚动的字段,外面有按钮。这是一个约束布局。

scrollview内的字段会减少,以使代码更短并且易于理解。

    <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:layout_width="match_parent"
                                             android:layout_height="match_parent"
                                             android:fitsSystemWindows="true">

    <ScrollView
            android:id="@+id/scroll_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/wf_white"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:fillViewport="true">

        <android.support.constraint.ConstraintLayout
                android:id="@+id/offers_summary_container"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/padding_offers_layout">

            <TextView
                    android:id="@+id/company_name"
                    style="@style/wf_text_copy_bold"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:layout_marginTop="15dp"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:text="ONE"/>

            <TextView
                    android:id="@+id/product_name"
                    style="@style/wf_text_copy"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    app:layout_constraintTop_toBottomOf="@+id/company_name"
                    app:layout_constraintStart_toStartOf="parent"
                    tools:text="Compact"/>

            <ImageView
                    android:id="@+id/logo_company"
                    android:layout_height="60dp"
                    android:layout_width="60dp"
                    android:layout_marginTop="@dimen/form_margins_small"
                    android:layout_marginEnd="@dimen/form_margins_small"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    android:contentDescription="@null"/>

            <TextView
                    android:id="@+id/offer_general_info"
                    android:layout_width="match_parent"
                    android:layout_height="?android:attr/listPreferredItemHeight"
                    android:ellipsize="end"
                    android:gravity="center_vertical"
                    app:layout_constraintStart_toEndOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/view"
                    android:text="@string/_CS_label_general_info"/>

        </android.support.constraint.ConstraintLayout>

    </ScrollView>

    <Button
            android:id="@+id/btn_go_to_checkout"
            style="@style/wf_button_primary"
            android:layout_width="match_parent"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="@dimen/text_margin_sides"
            android:layout_marginTop="@dimen/button_top_margin"
            android:descendantFocusability="beforeDescendants"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/scroll_view"
            android:text="@string/_OFCS_close_contract"
            android:fitsSystemWindows="true"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintVertical_bias="1.0"/>

</android.support.constraint.ConstraintLayout>

2 个答案:

答案 0 :(得分:1)

只需将底部填充添加到第二个 ConstraintLayout。 注意padding bottom值必须大于sticky button height

答案 1 :(得分:0)

替换此

<ScrollView
        android:id="@+id/scroll_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/wf_white"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:fillViewport="true">

与此

<ScrollView
        android:id="@+id/scroll_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@color/wf_white"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/btn_go_to_checkout"
        app:layout_constraintTop_toTopOf="parent"
        android:fillViewport="true">