我对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 专注于使子视图协同工作,如果所有元素都互相协调工作,那么这样做不是更好吗?这两种方法的优缺点是什么?