在 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的主要内容,如果未能解决你的问题,请参考以下文章
无法弄清楚如何在同一 ScrollView 中的 WebView 上方添加自定义视图
在 uiScrollView 之前添加 uiTextView
如何在滚动 contentView 之前向上移动 scrollview 的框架? (当 scrollView 从屏幕中间开始时)