在RelativeLayout中将ScrollView放在LinearLayout下面

时间:2016-07-17 21:01:31

标签: android android-layout xamarin.android

我正在创建一个可滚动菜单(ScrollView),其中一个关闭按钮(LinearLayout)位于屏幕顶部。

我的全屏是RelativeLayout - 有一个LinearLayout(关闭按钮),然后是一个ScrollView(菜单):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/DashboardView_Root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:id="@+id/DashboardView_menuHeaderContainer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/DashboardView_barContainer"
        android:layout_alignBottom="@+id/DashboardView_barContainer"
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/DashboardView_menuBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:paddingLeft="@dimen/layoutPaddingExtra"
            android:paddingTop="@dimen/layoutPaddingExtra"
            android:paddingRight="@dimen/layoutPaddingExtra"
            android:paddingBottom="@dimen/layoutPaddingLess"
            android:contentDescription="Menu"
            android:layout_gravity="bottom|center_vertical" />
        <Iag.TextView
            android:id="@+id/DashboardView_menuHeading"
            style="@style/Text.H3.Light"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="@dimen/layoutPadding"
            android:paddingTop="@dimen/layoutPaddingExtra"
            android:paddingRight="@dimen/layoutPaddingExtra"
            android:paddingBottom="@dimen/layoutPaddingExtra"
            android:layout_gravity="bottom" />
    </LinearLayout>
    <Scrollview
    android:id="@+id/DashboardView_menuContainer"
    android:layout_width="match_parent"
    android:layout_alignParentBottom="true"
    android:fillViewport="true" />
</RelativeLayout>

所有看起来都很完美,除了Scrollview在关闭按钮下方上升得太高。我希望ScrollView菜单停在关闭按钮(frameLayout)的底部。

enter image description here

如何停止菜单从关闭按钮(屏幕顶部)的相同位置开始?

编辑:对不起,我说关闭按钮最初是FrameLayout,但它是一个LinearLayout。请参阅上面的代码axml。

以下是整个页面的完整代码 - 如果用户点击菜单图标,菜单就会弹出屏幕的其余部分:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/DashboardView_Root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:id="@+id/DashboardView_contentContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/DashboardView_downBtn"
        android:layout_below="@+id/DashboardView_barContainer" />
    <ImageView
        android:id="@+id/DashboardView_downBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:paddingTop="@dimen/layoutPadding"
        android:paddingBottom="@dimen/layoutPaddingExtra"
        android:paddingLeft="@dimen/layoutPaddingExtra"
        android:paddingRight="@dimen/layoutPaddingExtra"
        android:clickable="true"
        android:focusable="true"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />
    <FrameLayout
        android:id="@+id/DashboardView_barContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:fitsSystemWindows="true">
        <ImageView
            android:id="@+id/DashboardView_upBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:src="@drawable/ab_logo"
            android:paddingLeft="@dimen/layoutPaddingExtra"
            android:paddingTop="@dimen/layoutPaddingExtra"
            android:paddingRight="@dimen/layoutPaddingExtra"
            android:paddingBottom="@dimen/layoutPaddingLess"
            android:contentDescription="Up"
            android:layout_gravity="center_horizontal" />
        <ImageView
            android:id="@+id/DashboardView_helpBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:src="@drawable/ab_help"
            android:paddingLeft="@dimen/layoutPaddingExtra"
            android:paddingTop="@dimen/layoutPaddingExtra"
            android:paddingRight="@dimen/layoutPaddingExtra"
            android:paddingBottom="@dimen/layoutPaddingLess"
            android:contentDescription="Help"
            android:layout_gravity="right" />
    </FrameLayout>
    <LinearLayout
        android:id="@+id/DashboardView_menuHeaderContainer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/DashboardView_barContainer"
        android:layout_alignBottom="@+id/DashboardView_barContainer"
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/DashboardView_menuBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:paddingLeft="@dimen/layoutPaddingExtra"
            android:paddingTop="@dimen/layoutPaddingExtra"
            android:paddingRight="@dimen/layoutPaddingExtra"
            android:paddingBottom="@dimen/layoutPaddingLess"
            android:contentDescription="Menu"
            android:layout_gravity="bottom|center_vertical" />
        <Iag.TextView
            android:id="@+id/DashboardView_menuHeading"
            style="@style/Text.H3.Light"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="@dimen/layoutPadding"
            android:paddingTop="@dimen/layoutPaddingExtra"
            android:paddingRight="@dimen/layoutPaddingExtra"
            android:paddingBottom="@dimen/layoutPaddingExtra"
            android:layout_gravity="bottom" />
    </LinearLayout>
    <Scrollview
    android:id="@+id/DashboardView_menuContainer"
    android:layout_width="match_parent"
    android:layout_alignParentBottom="true"
    android:fillViewport="true" />
</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

因此,在您的情况下,使用android:layout_below将其放在按钮下方。在相对布局中,这种​​属性始终可用。