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);
我在片段的布局文件中有一个浮动操作按钮,表示添加数据的操作。我使用了设计支持库的协调布局,并在 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);