我想将底部边距设置为等于视图/布局的高度。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
//Main layout
<LinearLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
.
.
.
</LinearLayout>
//Bottom drawer layout
<LinearLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
.
.
.
</LinearLayout>
</FrameLayout>
如何将第二个孩子的下边距添加到其高度,以便它离开屏幕? 是否可以通过xml属性?
答案 0 :(得分:1)
你无法在xml中获得视图的高度。
您可以使用ViewTreeObserver动态获取视图的高度,然后您可以设置该视图的边距。
以下是您可以动态执行的操作:
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.layoutid);
final ViewTreeObserver vto = linearLayout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
//get LayoutWidth and height here
int layoutWidth = linearLayout.getWidth();
int layoutHeight = linearLayout.getHeight();
//set layout margin here
LinearLayout.LayoutParams llp = linearLayout.getLayoutParams();
llp.bottomMargin = layoutHeight;
linearLayout.setLayoutParams(llp);
//Then remove layoutChange Listener
ViewTreeObserver vto = linearLayout.getViewTreeObserver();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
vto.removeOnGlobalLayoutListener(this);
} else {
vto.removeGlobalOnLayoutListener(this);
}
}
});