Java 如何在Android中始终显示工具栏,即使有滚动?

Java 如何在Android中始终显示工具栏,即使有滚动?,java,android,layout,kotlin,Java,Android,Layout,Kotlin,在网站上查找了各种答案和建议后,我在我的应用程序中实现了一个自定义工具栏,而不是使用默认的ActionBar。在大多数情况下,它工作正常,但是,与标准动作栏不同的一点是,每当我滚动时,它都会自动隐藏。在默认的ActionBar中,无论我是否滚动,它在活动中始终可见。有人能解释一下如何在自定义工具栏中实现这种行为吗?我已将我的xml附在下面: 编辑:我已尝试将工具栏移出scrollview,这会修复工具栏,但当我滚动时,活动中的其他视图也会在工具栏上重叠,因为最顶端的视图绑定到scrollview

在网站上查找了各种答案和建议后,我在我的应用程序中实现了一个自定义工具栏,而不是使用默认的ActionBar。在大多数情况下,它工作正常,但是,与标准动作栏不同的一点是,每当我滚动时,它都会自动隐藏。在默认的ActionBar中,无论我是否滚动,它在活动中始终可见。有人能解释一下如何在自定义工具栏中实现这种行为吗?我已将我的xml附在下面:

编辑:我已尝试将工具栏移出scrollview,这会修复工具栏,但当我滚动时,活动中的其他视图也会在工具栏上重叠,因为最顶端的视图绑定到scrollview,其他视图也绑定到它。因此,当前的实现比重叠问题要好,但它仍然不是我想要的解决方案

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ScrollView
    android:id="@+id/sc1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="0dp"
    android:layout_marginLeft="0dp"
    android:layout_marginRight="0dp"
    android:layout_marginStart="0dp"
    android:layout_marginTop="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="1.0">


    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:id="@+id/searchBar"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:ems="10"
            android:hint="Search..."
            android:textColorHint="@color/myWhite"
            android:inputType="textPersonName"
            android:textColor="@color/myWhite"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.503"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/subtitleBtn" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/myToolbar"
            android:layout_alignParentBottom="true"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:titleTextColor="@color/myWhite"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            android:contentInsetLeft="48dp"
            android:contentInsetStart="48dp"
            app:titleMarginStart="24dp"
            app:contentInsetLeft="12dp"
            app:contentInsetStart="12dp"
            android:contentInsetRight="0dp"
            android:contentInsetEnd="0dp"
            app:contentInsetRight="0dp"
            app:contentInsetEnd="0dp"/>

        <Button
            android:id="@+id/splitDrawableBackgroundBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Set Split Drawable Background"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.517"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/stackedDrawableBackgroundBtn" />

        <Button
            android:id="@+id/subtitleBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Show Subtitle"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/iconBtn" />

        <Button
            android:id="@+id/iconBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Set Icon"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/alternateBackBtn" />

        <Button
            android:id="@+id/alternateBackBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Set Alternate Back Button"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/hideBarBtn" />

        <Button
            android:id="@+id/hideBarBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Hide Action Bar"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/elevationBtn" />

        <Button
            android:id="@+id/elevationBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Set Elevation"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/logoBtn" />

        <Button
            android:id="@+id/logoBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Set Logo"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/hideAllBtn" />

        <Button
            android:id="@+id/hideAllBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Hide Everything"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/hideBackBtn" />

        <Button
            android:id="@+id/hideBackBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Hide Back Button"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.502"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/splitDrawableBackgroundBtn" />

        <Button
            android:id="@+id/stackedDrawableBackgroundBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Set Stacked Drawable Background"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/drawableBackgroundBtn" />

        <Button
            android:id="@+id/drawableBackgroundBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Set Drawable Background"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/customViewBtn" />

        <Button
            android:id="@+id/customViewBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Show Custom View"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/hideOffsetBtn" />

        <Button
            android:id="@+id/hideOffsetBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Hide Offset"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/backBtn" />

        <Button
            android:id="@+id/backBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:text="Show back button"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBtn" />

        <Button
            android:id="@+id/titleBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="88dp"
            android:text="Set Title"
            android:fontFamily="@font/roboto_black"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </android.support.constraint.ConstraintLayout>
</ScrollView>
</android.support.constraint.ConstraintLayout>

请将工具栏放在scrollview之前。然后,它将变得不可滚动,而该区域的其余部分可滚动

,因为工具栏位于它将滚动的滚动视图内。 取出并将其约束到约束布局的顶部。

您的工具栏位于滚动视图中,您可以将其放置在坐标布局的顶部以解决问题。因此,您的代码将如下所示

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

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


    <ScrollView
        android:id="@+id/sc1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText />
            <!-- other controls -->
        </android.support.constraint.ConstraintLayout>
    </ScrollView>


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

将工具栏移到滚动视图的我们一侧

您的视图层次结构应该如下所示:

<LinearLayout>
  <Toolbar/>
  <FrameLayout>
    <ScrollView/>
  </FrameLayoyt>
</LinearLayout>

最好使用线性布局而不是约束布局。并使用方向作为垂直方向。它可以很容易地解决您的问题。它修复了工具栏,但当我滚动时,活动中的其他视图也会在工具栏上重叠,因为最顶端的视图绑定到滚动视图,其他视图也绑定到滚动视图。正如我之前告诉Viswanath的那样,我尝试过,它修复了工具栏,但当我滚动时,“我的活动”中的其他视图也会在工具栏上重叠,因为最顶端的视图绑定到scrollview,其他视图也绑定到它。您必须重新构建scrollview,因为它不再位于顶端,如果其他视图引用了工具栏,则它们会接受您的提示,并在代码中有点混乱,所以现在它可以工作了,将您的答案标记为正确。@UsamaJawad在Constarint布局中重新排列视图很困难。这就是我不使用它的原因。嗨,请检查我刚才对我的问题所做的编辑,谢谢!