提问人:Peter Horvath 提问时间:1/5/2023 更新时间:1/5/2023 访问量:37
以编程方式添加 TextView 时,ScrollView 不起作用
ScrollView does not work when adding TextViews programmatically
问:
我在xml文件中定义了一个ScrollView和一个LinearLayout。
<ScrollView
android:id="@+id/planList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingTop="8dp"
android:paddingRight="8dp"
android:paddingBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button"
app:layout_constraintVertical_bias="0.0">
<LinearLayout
android:id="@+id/planListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
我以编程方式从 Activity 添加 TextViews。
val textView = TextView(this)
textView.text = text
textView.setPadding(0, 8, 0, 8)
textView.breakStrategy = LineBreaker.BREAK_STRATEGY_BALANCED
binding.planListView.addView(textView)
它填满了 linearLayout。当列表超过可用大小时,滚动条不会显示,并且根本没有可用的滚动。
怎么了?我怎样才能让它工作?
先谢谢你。
答:
1赞
Oleg
1/5/2023
#1
要使其正常工作,您需要正确设置布局属性。
texView.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
binding.planListView.addView(textView)
评论
0赞
Peter Horvath
1/5/2023
谢谢。我在 ScrollView 上面还有其他元素。因此,我希望 ScrollView 使用可用空间。我应该用什么来代替FILL_PARENT?
0赞
cactustictacs
1/5/2023
#2
ScrollView
当内容大于其本身时滚动 - 它充当窗口,允许您来回移动内容,以便您可以看到不同的部分。如果将高度设置为 ,则确保始终与其内容的高度相同 - 因此它不会滚动,并且可能会部分离开屏幕(这就是这里发生的情况 - 您可以使用布局检查器进行检查,您将看到视图延伸到屏幕区域下方)。ScrollView
wrap_content
ScrollView
您需要为它提供固定的高度,或者以其他方式限制它,以便当其内容变得太大时,它不会延伸到屏幕之外。通常,UI 中会有一个区域,您希望显示可滚动内容窗口 - 该区域是您的 .如果它的内容太大而无法容纳在该区域内,它将允许滚动。就是这样!ScrollView
ScrollView
评论
0赞
Peter Horvath
1/5/2023
我会选择“否则限制它,这样当它的内容变得太大时,它就不会延伸到屏幕之外”。我应该使用什么约束?
0赞
cactustictacs
1/6/2023
@PeterHorvath使用 并将 的底部约束设置为 的底部或下面另一个视图的顶部。并设置顶部约束,以便将顶部和底部固定到您希望它占据的区域。然后创建 0dp,以便它可以调整大小以匹配您的约束。(developer.android.com/develop/ui/views/layout/constraint-layoutConstraintLayout
ScrollView
parent
ScrollView
layout_height
)
评论