在以编程方式将视图添加到层​​次结构后,滚动ScrollView无法正常工作

时间:2018-01-01 16:28:46

标签: android android-scrollview

我正在以编程方式将视图添加到一个嵌入在ScrollView中的LinearLayout。但是ScrollView没有考虑扩展高度,因此滚动不起作用。添加视图后在ScrollView上调用invalidate()requestLayout()并没有解决问题。如何做到这一点?

<ScrollView
    android:id="@+id/scrollView"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:fillViewport="true"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/pager">

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

        <LinearLayout
            android:id="@+id/layout_to_which_views_are_added"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/label"> 


services.groupBy { it.category }.forEach { category ->
                val view = layoutInflater.inflate(R.layout.service_category, rootLayout, false)
                view.findViewById<TextView>(R.id.lblHeader).text = getStringArray(R.array.service_category_headers)[category.key]
                view.findViewById<TextView>(R.id.txtServices).text = category.value.joinToString(", ") { it.display }
                layout_to_which_views_are_added.addView(view)
            }
scrollView.invalidate()
scrollView.requestLayout()

1 个答案:

答案 0 :(得分:0)

发现问题,ScrollView的父级布局,一个CoordinatorLayout,它本身是一个ConstraintLayout的父级,缺少bottomToBottom到父级的约束,它会将它拉伸到底部,然后使ScrollView可以滚动到整个含量