当我在下面的RelativeLayout @ + id / saveCancelBar上调用view.setVisibility(View.VISIBLE)时,它会覆盖FrameLayout的一部分。我希望FrameLayout缩小以适应RelativeLayout。如果我将所有内容放在LinearLayout而不是RelativeLayout中,则显示SaveCancelBar只是将所有内容向上移动并将工具栏的一部分移出屏幕
<RelativeLayout
android:id="@+id/content_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center|bottom">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:elevation="4dp"
android:layout_alignParentTop="true"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<LinearLayout
android:id="@+id/content_view_panes"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar"
android:orientation="horizontal"
android:gravity="bottom">
<WebView
android:id="@+id/mainWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
<FrameLayout
android:id="@+id/listContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/colorPrimaryDark"
android:layout_below="@+id/content_view_panes"
android:visibility="gone"
android:id="@+id/saveCancelBar">
<Button
android:id="@+id/editorCancelButton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/editor_cancel"
android:textColor="@color/white"
android:layout_alignParentLeft="true"
android:background="@color/colorPrimaryDark"/>
<Button
android:id="@+id/editorSaveButton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/editor_save"
android:textColor="@color/white"
android:layout_alignParentRight="true"
android:background="@color/colorPrimaryDark"/>
</RelativeLayout>
</RelativeLayout>
答案 0 :(得分:0)
你需要做两件事。
首先,ID为listContainer
的FrameLayout不会垂直推卸,因为它的父级layout_height
设置为match_parent
。您应该将父content_view_panes
和saveCancelBar
包含在具有垂直方向的LinearLayout中,并将layout_height
设置为0dp
,layout_width
设置为{{1} }}。对于LinearLayout的子项,这会告诉它填充剩余空间。您不需要更改1
的宽度或高度,因为它会根据它的父级调整大小。
现在,当您更改listContainer
saveCancelBar
的可见度时,content_view_panes
将调整其高度。
E.g:
listContainer