Android 坐标布局在元素之间添加填充
我想在Coordinator视图中有两个浮动操作按钮。但当我尝试向顶部的FloatingActionButton添加边距时,它会从视图的末尾应用—它应该在FloatingActionButtons之间添加空间。 XMLAndroid 坐标布局在元素之间添加填充,android,android-coordinatorlayout,floating-action-button,floating-action-menu,Android,Android Coordinatorlayout,Floating Action Button,Floating Action Menu,我想在Coordinator视图中有两个浮动操作按钮。但当我尝试向顶部的FloatingActionButton添加边距时,它会从视图的末尾应用—它应该在FloatingActionButtons之间添加空间。 XML 我在实现FAB菜单时遇到了类似的问题。 您可以通过将第二个晶圆厂包装在框架布局中来解决此问题,如下所示: <android.support.design.widget.FloatingActionButton android:id="@+id/wordpackAd
我在实现FAB菜单时遇到了类似的问题。
您可以通过将第二个晶圆厂包装在框架布局中来解决此问题,如下所示:
<android.support.design.widget.FloatingActionButton
android:id="@+id/wordpackAddButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
app:elevation="5dp"
app:layout_anchorGravity="bottom|right|end" />
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="56dp"
app:layout_anchor="@id/wordpackAddButton"
app:layout_anchorGravity="top|right">
<android.support.design.widget.FloatingActionButton
android:id="@+id/importWordpack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_margin="16dp"
app:elevation="5dp"
app:layout_anchor="@id/wordpackAddButton" />
</FrameLayout>
这可能是一个有点骇人的解决方案,但它很简单,而且很有效。FrameLayout
的padding
值设置为56dp,因为这是晶圆厂的大小 在Fab按钮后添加此视图并更改顶级Fab
布局锚定到透明视图
<View
android:layout_width="8dp"
app:layout_anchor="@id/wordpackAddButton"
app:layout_anchorGravity="top"
app:useCompatPadding="false"
android:layout_gravity="end"
android:background="@android:color/transparent"
android:id="@+id/transparent_view"
android:layout_height="8dp"/>
希望有帮助。解决方案1:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
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">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_anchor="@id/wordpacks_list"
app:layout_anchorGravity="bottom|right|end"
android:layout_margin="16dp"
android:background="@android:color/transparent"
android:clipToPadding="false">
<android.support.design.widget.FloatingActionButton
android:id="@+id/importWordpack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:src="@drawable/add"
app:elevation="5dp" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/wordpackAddButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:src="@drawable/add"
app:elevation="5dp" />
</LinearLayout>
<ListView
android:id="@+id/wordpacks_list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</android.support.design.widget.CoordinatorLayout>
添加另一个视图
以在两个工厂之间形成间隙
。将视图的定位点设置为wordpackadd按钮的顶部
位置,并将导入rdpack的定位点设置为视图的右上方
位置
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
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">
<ListView
android:id="@+id/wordpacks_list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/wordpackAddButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/add"
app:elevation="5dp"
app:layout_anchor="@id/wordpacks_list"
app:layout_anchorGravity="bottom|right|end" />
<View
android:id="@+id/gap"
android:layout_width="16dp"
android:layout_height="16dp"
app:layout_anchor="@id/wordpackAddButton"
app:layout_anchorGravity="top">
</View>
<android.support.design.widget.FloatingActionButton
android:id="@+id/importWordpack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:src="@drawable/add"
app:elevation="5dp"
app:layout_anchor="@id/gap"
app:layout_anchorGravity="top|center" />
</android.support.design.widget.CoordinatorLayout>
输出:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
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">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_anchor="@id/wordpacks_list"
app:layout_anchorGravity="bottom|right|end"
android:layout_margin="16dp"
android:background="@android:color/transparent"
android:clipToPadding="false">
<android.support.design.widget.FloatingActionButton
android:id="@+id/importWordpack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:src="@drawable/add"
app:elevation="5dp" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/wordpackAddButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:src="@drawable/add"
app:elevation="5dp" />
</LinearLayout>
<ListView
android:id="@+id/wordpacks_list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</android.support.design.widget.CoordinatorLayout>
那么,当您将android:layout_marginBottom=“16dp”
添加到第二个晶圆厂时,它看起来如何?@EugenPechanec这就是问题所在。晶圆厂看起来一模一样。但当我添加marginBottom=“200dp”时,它是从Coordinator视图的右下角应用的,这会弄乱棒棒糖下面的填充。晶圆厂必须是坐标布局的直接子公司,所以它正确地减去了compat shadow占用的额外空间,并定位晶圆厂。哇,谢谢你澄清我不知道这一点!因此,唯一的方法(甚至更为骇人听闻)是在这些晶圆厂之间放置一个视图?您必须使用填充而不是边距,并且android:clipToPadding=“false”
以便正确绘制阴影。在棒棒糖出现之前,由于compat shadow的影响,插页会更大,而且由于晶圆厂不是协调布局的直接子公司,它们不会很好地使用Snackbar(让开)。