2

我动态地将一个内容视图注入到 中CoordinatorLayout,现在想将一个layout_below属性应用到注入的视图中,这样它就不会隐藏在AppBar.

有没有办法在运行时通过代码而不是注释的 xml 属性来做到这一点?

4

2 回答 2

5

退后一步,用纯 xml 构建整个视图,我意识到这layout_below不是我的用例所需的属性:将内容视图放在应用栏下方。不过,我并没有在我的问题中明确说明这一点,因为我认为layout_below这将是正确的选择。

实际上,要将非滚动视图插入到CoordinatorLayout它应该首先用android.support.v4.widget.NestedScrollView. 然后,为了避免其内容隐藏在应用栏后面,有必要将其行为更新为android.support.design.widget.AppBarLayout.ScrollingViewBehavior. 否则将使用默认行为,该行为将隐藏在应用栏后面。

val viewToInsert = getLayoutInflater.inflate( id, coordinatorWrapper, false )
val p = viewToInsert.getLayoutParams.asInstanceOf[Coordinator.LayoutParams]
p.setBehavior( new ScrollingViewBehavior )
coordinatorWrapper.addView( viewToInsert, 1, p )
于 2015-06-23T14:28:23.333 回答
3

你可以尝试设置一个anchor.

ContentView view = getContentView(); //your view
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) view.getLayoutParams();

params.setAnchorId(R.id.app_bar_layout);
params.anchorGravity = Gravity.BOTTOM; //we will anchor to the bottom line of the appbar
params.gravity = Gravity.BOTTOM; //we want to be BELOW that line
view.setLayoutParams(params);
于 2015-06-20T13:29:42.497 回答