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 に答える