如何在 Android Studio 中滚动时始终显示线性布局的第一行?
How to always display first row of a linear layout while scrolling through it in Android Studio?
我在 scrollView (垂直) 中使用 linearLayout (垂直)。 linearLayout 的所有子项都是 TextView 类型 (我正在该线性布局中动态添加 textViews)。
我想让 linearLayout 的第一行始终对用户可见,但我不知道如何实现...
TextView textView;
textView.setText("First row");
linearLayout2.addView(estimation);
在添加更多行并滚动时,我希望 "First row" 始终向用户显示。
我正在以需要 linearLayout 同时水平和垂直滚动的方式设计 UI。
我不能把第一行放在 scrollView 外面,因为 scrollView 放在水平 scrollView 里面,所以如果我把第一行放在 scrollView 外面,第一行将不会水平滚动。
请帮帮我...
这是 xml 文件
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/addbtn_phase2"
android:layout_margin="10dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearlayout3"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
</HorizontalScrollView>
在 linearLayout 内部,我像之前所说的那样动态添加 textView,但 **第一行不是动态添加的。**
你要求用离散 views/widgets 来实现相当复杂的东西。
了解您无法阻止该视图滚动,因为该视图对此没有(直接)了解,它正在被滚动视图移动。
您可以编写一个自定义 ScrollView 来检测某个视图(您的 TextView)何时到达屏幕中的特定位置(顶部),然后继续将视图“提升”到 ScrollView 之外,适当地将其放置在完全相同的位置坐标在屏幕上,然后协调器必须与水平 ScrollView 同步移动它,因此当该视图移动时,您将其转换为顶视图的移动。
如您所见,事情已经变得复杂了。
您可以通过将 Top TextView 保留在其 OWN Horizontal ScrollView 中(在“主”ScrollView 之外)来进行水平同步,当视图水平滚动时,您“翻译”它并以编程方式将其复制到“顶部水平”滚动视图。
[Top Horizontal Scroll View]
[Top TextView]
[Main ScrollView]
[Scrollable Content minus the Top TextView]
因此,当您滚动 MainScrollView 时...您还“手动移动”了顶部水平视图,使其并排移动。
只是一个想法,但可能还有其他问题。
重新排列 XML 代码如下:
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/addbtn_phase2"
android:layout_margin="10dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relative_layout">
<ScrollView
android:layout_marginTop="23dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearlayout3"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
</RelativeLayout>
</HorizontalScrollView>
现在在相对布局中添加第一行。
重要的是,设置inner scrollView的marginTop属性,使其不会与相对布局的内容重叠
我在 scrollView (垂直) 中使用 linearLayout (垂直)。 linearLayout 的所有子项都是 TextView 类型 (我正在该线性布局中动态添加 textViews)。
我想让 linearLayout 的第一行始终对用户可见,但我不知道如何实现...
TextView textView;
textView.setText("First row");
linearLayout2.addView(estimation);
在添加更多行并滚动时,我希望 "First row" 始终向用户显示。
我正在以需要 linearLayout 同时水平和垂直滚动的方式设计 UI。
我不能把第一行放在 scrollView 外面,因为 scrollView 放在水平 scrollView 里面,所以如果我把第一行放在 scrollView 外面,第一行将不会水平滚动。
请帮帮我...
这是 xml 文件
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/addbtn_phase2"
android:layout_margin="10dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearlayout3"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
</HorizontalScrollView>
在 linearLayout 内部,我像之前所说的那样动态添加 textView,但 **第一行不是动态添加的。**
你要求用离散 views/widgets 来实现相当复杂的东西。
了解您无法阻止该视图滚动,因为该视图对此没有(直接)了解,它正在被滚动视图移动。
您可以编写一个自定义 ScrollView 来检测某个视图(您的 TextView)何时到达屏幕中的特定位置(顶部),然后继续将视图“提升”到 ScrollView 之外,适当地将其放置在完全相同的位置坐标在屏幕上,然后协调器必须与水平 ScrollView 同步移动它,因此当该视图移动时,您将其转换为顶视图的移动。
如您所见,事情已经变得复杂了。
您可以通过将 Top TextView 保留在其 OWN Horizontal ScrollView 中(在“主”ScrollView 之外)来进行水平同步,当视图水平滚动时,您“翻译”它并以编程方式将其复制到“顶部水平”滚动视图。
[Top Horizontal Scroll View]
[Top TextView]
[Main ScrollView]
[Scrollable Content minus the Top TextView]
因此,当您滚动 MainScrollView 时...您还“手动移动”了顶部水平视图,使其并排移动。
只是一个想法,但可能还有其他问题。
重新排列 XML 代码如下:
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/addbtn_phase2"
android:layout_margin="10dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relative_layout">
<ScrollView
android:layout_marginTop="23dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearlayout3"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
</RelativeLayout>
</HorizontalScrollView>
现在在相对布局中添加第一行。
重要的是,设置inner scrollView的marginTop属性,使其不会与相对布局的内容重叠