Android:在使用CoordinatorLayout时,哪种做法更好?

10

我对Android的材料设计方面还很陌生,请耐心等待。我尝试在我的主页面实现FAB,然后实现了Snackbar。但它自然地出现在我的FAB上方。我研究了CoordinatorLayout,并且困扰我的是哪种更好地使用CoordinatorLayout?

例如,这是我的活动的XML。

<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>

我看其他人是这样添加CoordinatorLayout的。

<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.support.design.widget.CoordinatorLayout> 用作所有元素的根元素,完全绕过或删除 <RelativeLayout>

这样xml代码会变成这样:

    <android.support.design.widget.CoordinatorLayout
        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.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>被完全移除了。因此,我们不再仅仅为 FAB 使用 </android.support.design.widget.CoordinatorLayout>,而是将其用于整个活动。由于 CoordinatorLayout 专注于使子视图协同工作,如果所有元素都互相协调工作,那么这样做不是更好吗?这两种方法的优缺点是什么?


3
请查看以下链接:https://lab.getbase.com/introduction-to-coordinator-layout-on-android/ 或 https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout 。 - Haresh Chhelana
@HareshChhelana,阅读了那些链接后,我对此有了更好的理解。感谢您的帮助。 - Anshul Vyas
很高兴能帮助你亲爱的。 - Haresh Chhelana
1个回答

5

CoordinatorLayout(协调布局)是比较新的一种布局方式,它可以解决 FloatingActionButton 和 NavDrawer 的很多问题。因此,如果你必须使用 FAB 或者 NavDrawer,我强烈建议你从现在开始将 CoordinatorLayout 作为您的最高级别布局(即您最后的代码片段),然后在其中可以使用 RelativeLayout 或 LinearLayout 进行更精细的布局。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接