底部导航栏被Scrollview布局推出视图

时间:2017-07-16 09:10:56

标签: java android android-layout

直接切入追逐。我希望我的应用程序有一个底部导航栏,然后在顶部有一个工具栏,中间将是一个滚动视图,其中将放置内容。

现在的问题是ScrollView布局将导航栏推出视图,现在导航栏将不会显示。

As you can see, the navigation bar isn't showing because the ScrollView takes up the bottom of the screen too.

我试过的另一个解决方案,但事实证明导航栏在ScrollView顶部弹出

That blue bar below the Home toolbar is the navigation bar.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="polytechnic.temasek.bluebeatsmusicapplication.HomePageActivity">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:background="@drawable/bluebeatsbackground2">

    <TextView
        android:id="@+id/toolbartitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Home"
        android:textColor="@android:color/white"
        android:textSize="32sp"
        android:textStyle="bold" />
</android.support.v7.widget.Toolbar>


<ScrollView
        android:layout_width="match_parent"
        android:layout_height="539dp"
    >

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="0dp">

            [Content inside] 
            </android.support.constraint.ConstraintLayout>

    </ScrollView>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/the_bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_gravity="bottom"
    android:background="@color/colorPrimary"
    app:itemBackground="@color/colorPrimary">
    </android.support.design.widget.BottomNavigationView>
</LinearLayout>

到目前为止,我只能将Scrollview的高度强制到某个dp以便为导航栏腾出空间,但是我必须有另一种方法可以忽略它?

1 个答案:

答案 0 :(得分:3)

您可以更好地使用相对布局约束布局我建议使用约束布局 )来处理这种情况。

我已将您的布局修改为Constraint Layout。 我已将滚动条的marginBottom值欺骗到bottomNavigationBar的高度[否则,scrollView的某些内容仍保留在bottomNavBar之后]。

enter image description here

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#000"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@+id/toolbartitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Home"
            android:textColor="@android:color/white"
            android:textSize="32sp"
            android:textStyle="bold" />

    </android.support.v7.widget.Toolbar>

    <ScrollView
        android:id="@+id/scrollView2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="50dp"
        android:layout_marginTop="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/toolbar">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="@string/long_text"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

        </android.support.constraint.ConstraintLayout>
    </ScrollView>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/the_bottom_navigation"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_gravity="bottom"
        android:background="@color/colorPrimary"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

    </android.support.design.widget.BottomNavigationView>


</android.support.constraint.ConstraintLayout>