android - CoordinatorLayout 末尾的 float 操作按钮

标签 android android-coordinatorlayout floating-action-button

我试图在 CoordinatorLayout 中移动我的按钮,但没有很好的结果。

注意:这不是一个 fab 按钮!背景中还有 2 个不可见的。还有一个不可见的卡片 View ,在那种情况下我的 fab 按钮不在右下角。

我尝试过的:我尝试遵循 CoordinatorLayout, FAB and container layout conflict

enter image description here

布局

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

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

            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/cardview_default_margin">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:padding="@dimen/padding_detail_card">

                    <!-- Nominativo -->
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/tv_nominativo"
                        style="@style/AppTheme.NoActionBar.Text.Primary"/>

                    <!-- Identificativo -->
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/tv_identificativo"
                        style="@style/AppTheme.NoActionBar.Text.Primary"/>

                    <!-- Data -->
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/tv_data"
                        style="@style/AppTheme.NoActionBar.Text.Primary"/>

                    <!-- Indirizzo -->
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/tv_indirizzo"
                        style="@style/AppTheme.NoActionBar.Text.Primary" />

                    <!-- Telefono -->
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/tv_telefono"
                        style="@style/AppTheme.NoActionBar.Text.Primary" />
                </LinearLayout>
            </android.support.v7.widget.CardView>
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/cardview_default_margin">

                <!-- Colli -->
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:padding="@dimen/padding_detail_card">

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

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.Text.Secondary"
                            android:text="@string/card_colli"
                            android:textStyle="bold"/>

                        <EditText
                            android:layout_width="70dp"
                            android:layout_height="wrap_content"
                            android:inputType="number"
                            style="@style/AppTheme.NoActionBar.EditText.Primary"
                            android:id="@+id/et_colli"/>

                    </LinearLayout>

                    <!-- Pallet ritiro -->
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.Text.Secondary"
                            android:text="@string/card_pallet"
                            android:textStyle="bold"/>

                        <EditText
                            android:layout_width="70dp"
                            android:layout_height="wrap_content"
                            android:inputType="number"
                            style="@style/AppTheme.NoActionBar.EditText.Primary"
                            android:id="@+id/et_pallet_ritiro"/>

                    </LinearLayout>

                    <!-- Pallet consegne -->
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.Text.Secondary"
                            android:text="@string/card_pallet_consegne"
                            android:textStyle="bold"/>

                        <EditText
                            android:layout_width="70dp"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.EditText.Primary"
                            android:id="@+id/et_pallet_consegne"/>

                    </LinearLayout>
                </LinearLayout>
            </android.support.v7.widget.CardView>
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/cardview_default_margin">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:paddingStart="@dimen/padding_detail_card">

                    <!-- Note documento-->
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/tv_note_documento"
                        style="@style/AppTheme.NoActionBar.Text.Primary"/>

                    <!-- Note fisse -->
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.Text.Secondary"
                            android:text="@string/card_note"
                            android:textStyle="bold"/>

                        <Spinner
                            android:layout_width="250dp"
                            android:layout_height="wrap_content"
                            android:id="@+id/sp_note"
                            android:background="@drawable/spinner_gradient"/>

                    </LinearLayout>

                    <!-- Note operative -->
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.Text.Secondary"
                            android:text="@string/card_note_operative"
                            android:textStyle="bold"/>

                        <EditText
                            android:layout_width="70dp"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.EditText.Primary"
                            android:id="@+id/et_note_operative"/>
                    </LinearLayout>

                    <!-- Note destinazione -->
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.Text.Secondary"
                            android:text="@string/card_note_destinazione"
                            android:textStyle="bold"/>

                        <EditText
                            android:layout_width="70dp"
                            android:layout_height="wrap_content"
                            style="@style/AppTheme.NoActionBar.EditText.Primary"
                            android:id="@+id/card_note_destinazione"/>
                    </LinearLayout>
                </LinearLayout>
            </android.support.v7.widget.CardView>
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/card_consegne"
                android:layout_margin="@dimen/cardview_default_margin">

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


                    <!-- NOMINATIVO RICEVENTE -->
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical">

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

                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="@string/card_nome_ricevente"
                                style="@style/AppTheme.NoActionBar.Text.Secondary"/>

                            <EditText
                                android:layout_width="200dp"
                                android:layout_height="wrap_content"
                                style="@style/AppTheme.NoActionBar.EditText.Primary"
                                android:id="@+id/et_nome_ricevente"/>

                        </LinearLayout>

                        <!-- COGNOME RICEVENTE -->
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:orientation="vertical">

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

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:text="@string/card_cognome_ricevente"
                                    style="@style/AppTheme.NoActionBar.Text.Secondary"/>

                                <EditText
                                    android:layout_width="200dp"
                                    android:layout_height="wrap_content"
                                    style="@style/AppTheme.NoActionBar.EditText.Primary"
                                    android:id="@+id/et_cognome_ricevente"/>

                            </LinearLayout>

                            <!-- DATA CONSEGNA -->
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:orientation="horizontal">

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:text="@string/card_data_consegna"
                                    style="@style/AppTheme.NoActionBar.Text.Secondary"/>

                                <EditText
                                    android:layout_width="200dp"
                                    android:layout_height="wrap_content"
                                    style="@style/AppTheme.NoActionBar.EditText.Primary"
                                    android:id="@+id/et_data_consegna" />

                                <Button
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:id="@+id/current_date"
                                    android:text="@string/action_set"
                                    style="@style/AppTheme.NoActionBar.Button.Set"/>

                            </LinearLayout>

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

                                <CheckBox
                                    android:layout_width="50dp"
                                    android:layout_height="wrap_content"
                                    android:id="@+id/cb_pagamento_consegna"
                                    android:buttonTint="@color/colorPrimary"/>

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:text="@string/card_pagamento_consegna"
                                    style="@style/AppTheme.NoActionBar.Text.Secondary" />
                            </LinearLayout>
                        </LinearLayout>
                    </LinearLayout>
                </LinearLayout>
            </android.support.v7.widget.CardView>
        </LinearLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab_salva"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="160dp"
            android:layout_gravity="bottom|end"
            android:layout_marginEnd="@dimen/fab_margin"
            android:visibility="invisible"
            app:backgroundTint="@color/colorAccent"
            app:elevation="6dp"
            app:pressedTranslationZ="12dp"
            android:src="@drawable/ic_document_salva" />
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab_firma"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="90dp"
            android:layout_gravity="bottom|end"
            android:layout_marginEnd="@dimen/fab_margin"
            android:visibility="invisible"
            app:elevation="6dp"
            app:backgroundTint="@color/colorAccent"
            app:pressedTranslationZ="12dp"
            android:src="@drawable/ic_document_firma" />
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab_action"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            app:elevation="6dp"
            app:backgroundTint="@color/colorAccent"
            app:pressedTranslationZ="12dp"
            android:layout_margin="@dimen/fab_margin"
            android:src="@drawable/ic_document_fab" />

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

最佳答案

您必须将 CoordinatorLayout 设置为具有 match_parent 高度的父布局,然后将 ScrollView 设置为子布局(包含您的内容)并且您的 FAB 取代了 ScrollView(在 CoordinatorLayout 中),例如:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

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

            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/cardview_default_margin">
            </android.support.v7.widget.CardView>

            ... Other content ...

        </LinearLayout>

    </ScrollView>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_salva"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="160dp"
        android:layout_gravity="bottom|end"
        android:layout_marginEnd="@dimen/fab_margin"
        android:visibility="invisible"
        app:backgroundTint="@color/colorAccent"
        app:elevation="6dp"
        app:pressedTranslationZ="12dp"
        android:src="@drawable/ic_document_salva" />
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_firma"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="90dp"
        android:layout_gravity="bottom|end"
        android:layout_marginEnd="@dimen/fab_margin"
        android:visibility="invisible"
        app:elevation="6dp"
        app:backgroundTint="@color/colorAccent"
        app:pressedTranslationZ="12dp"
        android:src="@drawable/ic_document_firma" />
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        app:elevation="6dp"
        app:backgroundTint="@color/colorAccent"
        app:pressedTranslationZ="12dp"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_document_fab" />
</android.support.design.widget.CoordinatorLayout>

关于android - CoordinatorLayout 末尾的 float 操作按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50985391/

相关文章:

android - float 操作按钮在棉花糖和 Lollipop 中不起作用

Android:VelocityTracker 无法打开 '/dev/touch'(权限被拒绝)

android - float 操作按钮在 API 21 及更高版本中与底部对齐?

java - Android 保存和加载 PATH 对象的最佳方式。

java - 为什么 Android 小部件中的可运行 View 未更新?

android - 是否可以用 Google Pay 替换 Google Play IAB?

android - 包裹在 CollapsingToolbarLayout 中时如何显示工具栏的 Logo 、图标、标题、副标题?

java - SAX 解析器 : Retrieving HTML tags from XML

android - 如何像Facebook Profile一样在AppBar上隐藏ImageView?

android - 使用 ConstraintLayout 和 CoordinatorLayout 在滚动时设置动画