我使用CoordinatorLayout
作为我的根视图。它包含RelativeLayout
和FloatingActionButton
。当我为layout_anchor
设置layout_anchorGravity
和FloatingActionButton
时,它不会像我预期的那样位于RelativeLayout
(屏幕上的橙色区域)的边缘。
我尝试了这个问题的解决方案How can I add the new "Floating Action Button" between two widgets/layouts,但没有成功。
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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">
<RelativeLayout
android:id="@+id/primary_area"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primary"
android:paddingBottom="30dp">
<com.vocabularyminer.android.android.view.view.FloatingEditText
android:id="@+id/edittext_package_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:layout_marginLeft="14dp"
android:layout_marginRight="14dp"
android:layout_marginTop="16dp"
android:hint="Test fab button"/>
</RelativeLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:src="@drawable/ic_done_white_24dp"
app:elevation="4dp"
app:layout_anchor="@id/primary_area"
app:layout_anchorGravity="bottom|right|end"/>
</android.support.design.widget.CoordinatorLayout>
我的预期:
答案 0 :(得分:0)
我习惯通过此代码自行锚定,以添加主视图的addOnLayoutChangeListener侦听器:
// fabGap is the right margin from the CoordinatorLayout
// container is your CoordinatorLayout
final FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.TOP);
layoutParams.setMargins(mAppBarLayout.getRight() - (2 * fabSize) - (2 * fabGap), mAppBarLayout.getBottom() - (fabSize / 2), 0, fabPadding);
mFavoriteActionButton = new FloatingActionButton(getActivity());
答案 1 :(得分:0)
我发现了我的问题。此问题的解决方案:How can I add the new "Floating Action Button" between two widgets/layouts 正确。但我把我的片段放到了FrameLayout,它是根据这个xml:
定义的<FrameLayout
android:id="@+id/floating_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
因为我使用了 wrap_content ,所以FAB按钮被放置在RelativeLayout内,而不是RelativeLayout边缘的位置。
当我在 layout_heigh 参数 match_parent 中使用时,一切都按预期工作。