在 ScrollView 之前添加 LinearLayout

Posted

技术标签:

【中文标题】在 ScrollView 之前添加 LinearLayout【英文标题】:Add LinearLayout before ScrollView 【发布时间】:2021-01-22 16:16:06 【问题描述】:

我有一个滚动视图,但我想要一个带有 3 个按钮的线性布局,这些按钮在滚动时保持在顶部。所以它的功能应该有点像贴在顶部的导航栏。 当前代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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_
    android:layout_
    tools:context=".MainActivity">
    <androidx.gridlayout.widget.GridLayout
        android:id="@+id/gridRoot"
        android:layout_
        android:layout_
        app:columnCount="2"
        app:rowCount="32">
    </androidx.gridlayout.widget.GridLayout>
</ScrollView>

【问题讨论】:

【参考方案1】:

ScrollView 放在一个垂直的LinearLayout 中,并在ScrollView 上方添加这三个按钮。

<LinearLayout android:orientation="vertical">
  <YourButtonsHere/>
  <ScrollView/>
</LinearLayout>

【讨论】:

这样,你的3个按钮在堆积。然后你 ScrollView【参考方案2】:

有几种方法可以实现这一点,但最简单的一种是将垂直 LinearLayout 作为父级。然后,您将按钮放在水平线性布局中,以便它们位于顶部并充当“条”。 然后你只需要添加滚动视图。 这样用户可以滚动滚动视图,并且 3 个按钮保持在滚动视图的顶部。

<!-- vertical linear layout as parent -->
<LinearLayout
    android:layout_
    android:layout_
    android:orientation="vertical">
        
    <!-- Place buttons in a horizontal linearlayout, so that you have a bar on the 
     top-->
    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="horizontal">
            
        <!-- buttons width=0 + same layout_weight, that way the width of the 
         linear layout is equally distributed between the 3 buttons--> 
        <Button
            android:layout_
            android:layout_
            android:layout_weight="1"/>

        <Button
            android:layout_
            android:layout_
            android:layout_weight="1"/>

        <Button
            android:layout_
            android:layout_
            android:layout_weight="1"/>

    </LinearLayout>

    <!-- your scroll view here-->
    <ScrollView
        android:layout_
        android:layout_>
            
    </ScrollView>

</LinearLayout>

【讨论】:

【参考方案3】:

XML:

    <androidx.appcompat.widget.LinearLayoutCompat
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:weightSum="10">

    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_
        android:layout_
        android:gravity="center"
        android:layout_weight="1"
        android:orientation="horizontal">

        <com.sharedcode.widgets.CustomButton
            style="@style/FlatButton"
            android:layout_
            android:layout_
            android:text="btn1"
            android:layout_margin="@dimen/spacing_6" />

        <com.sharedcode.widgets.CustomButton
            style="@style/FlatButton"
            android:layout_
            android:text="btn2"
            android:layout_
            android:layout_margin="@dimen/spacing_6" />

        <com.sharedcode.widgets.CustomButton
            style="@style/FlatButton"
            android:layout_
            android:layout_
            android:text="btn3"
            android:layout_margin="@dimen/spacing_6" />

    </androidx.appcompat.widget.LinearLayoutCompat>

    <ScrollView
        android:layout_
        android:layout_
        android:layout_weight="9"
        tools:context=".MainActivity">

        //in your case this is GridView
        <androidx.recyclerview.widget.RecyclerView 
            android:id="@+id/gridRoot"
            android:layout_
            android:layout_
            app:columnCount="2"
            app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
            app:rowCount="32"
            app:spanCount="2"
            tools:listitem="@layout/row_exam" />
    </ScrollView>
</androidx.appcompat.widget.LinearLayoutCompat>

【讨论】:

以上是关于在 ScrollView 之前添加 LinearLayout的主要内容,如果未能解决你的问题,请参考以下文章

iOS 用xib给scrollView添加约束

无法弄清楚如何在同一 ScrollView 中的 WebView 上方添加自定义视图

在 uiScrollView 之前添加 uiTextView

如何在滚动 contentView 之前向上移动 scrollview 的框架? (当 scrollView 从屏幕中间开始时)

Xcode 5 ScrollView滚动太远

在 viewDidAppear 之前获取 scrollView 的内容大小