ViewPager和FAB的正确布局?

时间:2016-01-20 23:21:06

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

如果我想要一个ViewPager包含多个Fragments,并且FloatingActionButtonFragments中的一个FAB使用,那么理想的布局行为是什么?< / p>

一个。 Activity是否应位于CoordinatorLayout布局中,该布局还包含AppBarLayout / Toolbar / ViewPager的<{1}}?

B中。 FAB是否应位于Fragment布局?

选项A有意义,FAB应该能够在CoordinatorLayout内根据需要设置动画。例如,如果我显示Snackbar,我希望FAB向上/向下移动显示/隐藏Snackbar。但是,在此处放置FAB要求我隐藏/显示FAB,因为其他两个Fragments将不会使用FAB并且应该隐藏它。

选项B基本上与这些优点/缺点相反。

更正确的是什么?

谢谢, 扎克

1 个答案:

答案 0 :(得分:1)

  

一个。 FAB 应该位于CoordinatorLayout布局中吗?   包含持有AppBarLayout/Toolbar/ViewPager的{​​{1}}   <CoordinatorLayout> <AppbarLayout/> <scrollableView/> <FloatingActionButton/> </CoordinatorLayout>

是的,确实。

请看这个例子:

FloatingActionButton

正如您所看到的,在上面的示例中,我们在CoordinatorLayout中使用了FloatingActionButtonFragment可以始终在布局上进行布局,而无需滚动{甚至隐藏Fragment {1}}或任何观点。

最后,您可以将此用于<android.support.design.widget.CoordinatorLayout android:id="@+id/coordinator" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/dashboard_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.Toolbar" app:layout_scrollFlags="scroll|enterAlways"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/dashboard_content" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout>

FrameLayout

另外,我要提一下,app:layout_behavior="@string/appbar_scrolling_view_behavior"添加了AppbarLayout 可以在Fragment

之下

这就是那条线的重点。

  

B中。 FAB应该位于CoordinatorLayout布局吗?

这取决于你,但使用它<meta charset="UTF-8"> <title>SwitchButton</title> <link rel="stylesheet" href="style/style_edit.css" type="text/css"> <link rel="stylesheet" href="js/jquery-ui-1.11.4.custom/jquery-ui.css"> <link rel="stylesheet" href="js/jquery-ui-1.11.4.custom/external/jqwidgets/styles/jqx.base.css" type="text/css"/> <link rel="stylesheet" href="js/jquery-ui-1.11.4.custom/external/jqwidgets/styles/jqx.classic.css" type="text/css"/> <script type="text/javascript" src="js/jquery-ui-1.11.4.custom/external/jquery/jquery-2.1.4.min.js"></script> <script src="js/jquery-ui-1.11.4.custom/jquery-ui.js"></script> <script type="text/javascript" src="js/jquery-ui-1.11.4.custom/external/jqwidgets/jqxcore.js"></script> <script type="text/javascript" src="js/jquery-ui-1.11.4.custom/external/jqwidgets/jqxswitchbutton.js"></script> <script type="text/javascript" src="js/jquery-ui-1.11.4.custom/external/jqwidgets/jqxcheckbox.js"></script> <script type="text/javascript"> $(document).ready(function () { $('#jqxSwitchButton').jqxSwitchButton({checked: true}); // Get the value. var value = $("#jqxSwitchButton").jqxSwitchButton('val',true); var value2 = $("#jqxSwitchButton").val(); console.log(value); console.log(value2); // Set value. $("#jqxSwitchButton").jqxSwitchButton('val', true); // Set value using jQuery's val(). $("#jqxSwitchButton").val(true); }); </script> 是最好的方法。我的意思是,你可以用它来实现很多 MaterialDesign 的东西。