CoordinatorLayout末尾的浮动动作按钮

时间:2018-06-22 09:54:25

标签: android android-coordinatorlayout floating-action-button

我试图在CoordinatorLayout中移动按钮,但效果不佳。

注意:这不是一个晶圆厂按钮!在背景中还有2个以上不可见。还有一个不可见的卡片视图,在这种情况下,我的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>

1 个答案:

答案 0 :(得分:3)

您必须将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>