Проблема макета между относительным макетом и координаторным макетом

Может кто-нибудь помочь мне понять проблему макета между относительным макетом и макетом координатора. Первоначально я использовал кнопку плавающего действия в относительном макете. Ниже приведен код.

    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/primary_color"></android.support.v7.widget.Toolbar>


        <android.support.design.widget.FloatingActionButton
            android:id="@+id/searchfab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="20dp"
            android:layout_marginRight="20dp"
            android:src="@drawable/ic_add_black_24dp"
            app:fabSize="normal">

        </android.support.design.widget.FloatingActionButton>

</RelativeLayout>

Выход:

введите здесь описание изображения

Для работы со Snackbar я использовал макет Coordinator в том же коде. Но я получил плавающую панель действий в другом положении.

    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/primary_color"></android.support.v7.widget.Toolbar>

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

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/searchfab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="20dp"
            android:layout_marginRight="20dp"
            android:src="@drawable/ic_add_black_24dp"
            app:fabSize="normal">

        </android.support.design.widget.FloatingActionButton>

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

выход:

введите здесь описание изображения

Во всяком случае, я решил проблему, заменив android:layout_alignParentRight и android:layout_alignParentBottom на android:layoutGravity="right|bottom".

Вопрос в том, почему android:layout_alignParentRight и android:layout_alignParentBottom не работают для макета координатора, хотя его высота и ширина сохраняются как match_parent.

Ценю ваш ответ. Спасибо.


person user2350138    schedule 14.09.2015    source источник


Ответы (1)


Вы должны использовать android:gravity="bottom|right", layout_alignxxxx подходит только для детей до RelativeLayout

<android.support.design.widget.FloatingActionButton
        android:id="@+id/searchfab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="bottom|right"
        android:layout_marginBottom="20dp"
        android:layout_marginRight="20dp"
        android:src="@drawable/ic_add_black_24dp"
        app:fabSize="normal">
person Derek Fung    schedule 14.09.2015