我动态地将一个内容视图注入到 中CoordinatorLayout
,现在想将一个layout_below
属性应用到注入的视图中,这样它就不会隐藏在AppBar
.
有没有办法在运行时通过代码而不是注释的 xml 属性来做到这一点?
我动态地将一个内容视图注入到 中CoordinatorLayout
,现在想将一个layout_below
属性应用到注入的视图中,这样它就不会隐藏在AppBar
.
有没有办法在运行时通过代码而不是注释的 xml 属性来做到这一点?
退后一步,用纯 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 )
你可以尝试设置一个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);