在FloatingActionButton上运行时设置layout_anchor

16
我正在尝试为我的AppBarLayout添加一个android.support.design.widget.FloatingActionButton的动画效果。我可以在布局xml中设置它,看起来也很好。然而,当我使用共享元素转换到该布局时,FAB会在视图设置之前显示出来。我尝试将其可见性设置为GONE和INVISIBLE,但如果在布局xml中设置了layout_anchor,则它们似乎被忽略了。有没有什么办法解决这个问题?
我希望活动在共享元素转换后加载并淡入我的FAB。我只是不能在加载时隐藏FAB。如果可能的话,我想保留使用layout_anchor的方法。
1个回答

39

如果你有一个带有app:layout_anchor属性的FAB,并且想要设置其可见性,你应该像这样使用:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
params.setAnchorId(View.NO_ID);
fab.setLayoutParams(params);
fab.setVisibility(View.GONE);

如果您想动态设置app:layout_anchor,可以使用相同的代码:

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

这看起来非常有前途。那么以这种方式设置layout_anchorGravity呢? - BigDX
我可以在布局XML中保留layout_anchorGravity,只需像您上面所说的那样设置锚点ID即可。太好了!谢谢 - BigDX
这确实可以动态设置锚点,但它并不能解决在这个问题中提到的共享元素过渡问题。设置锚点似乎会破坏动画效果。如果不设置任何锚点,动画似乎可以正常工作。 - Apoorv Khatreja
如果我在添加视图之后设置它,它什么也不做;如果我在添加视图之前设置它,它会崩溃... - xjcl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接