android 浮动操作按钮动态更改视图锚点

android Floating Action Button change view anchor dynamically

我在片段的布局文件中有一个浮动操作按钮,表示添加数据的操作。我使用了设计支持库的协调布局,并在 CoordinationLayout 内部放置了包含 2 个视图的线性布局和一个浮动操作按钮。

 <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <LinearLayout
            android:id="@+id/dataLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone"
            android:animateLayoutChanges="true"
            android:orientation="vertical">

            <View
                android:id="@+id/viewA"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.6"
                android:background="@android:color/holo_purple"
             />

            <View
                android:id="@+id/viewB"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.4"

                android:background="@android:color/holo_orange_light"
            />

        </LinearLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/actionAddMembers"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_add_white_24dp"
            app:borderWidth="0dp"
            app:elevation="4dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_gravity="bottom|right"/>
    </android.support.design.widget.CoordinatorLayout>

现在,最初包含 2 个视图的线性布局将具有 visibility=gone。当我点击浮动操作按钮时,我想把视图放在前面。当视图出现在屏幕上时,我想将 FAB 锚定到视图 A 的末尾。我已经看到我可以将锚点放在布局文件中,这使我的视图成为静态的。我想在 运行 期间更改此设置,此时视图 A 在单击 FAB 时出现。我无法在 FLoatingActionButton 对象中找到任何相关方法来动态更改锚点。 请建议我如何完成此任务

您可以分配 anchorEd,检索 CoordinatorLayout.LayoutParams

您可以使用这样的代码:

CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
p.setAnchorId(xxxx);
fab.setLayoutParams(p);