滚动视图中的动态相对布局

时间:2018-10-19 09:07:21

标签: android android-scrollview android-relativelayout

我正在通过Java向位于ScrollView内的相对布局中添加动态内容:

<ScrollView
    android:layout_below="@id/btn_draw_route"
    android:id="@+id/layout_scroll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:layout_alignParentBottom="true">

    <RelativeLayout
        android:id="@+id/layout_route"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </RelativeLayout>

</ScrollView>

由于某些原因,scrollview中的内容不可滚动。

我正在添加如下内容:

Button mButton = new Button(this);

mButton.setText(String.valueOf(singleStep.getId()));
mButton.setId(View.generateViewId());
mButton.setOnClickListener(new MyClickListener(singleStep.getId()));

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);

lp.bottomMargin = 10;
lp.topMargin = 10;
lp.leftMargin = 10;
lp.rightMargin = 10;
lp.addRule(RelativeLayout.CENTER_HORIZONTAL);

// Add to relativeLayout
mRouteLayout.addView(mButton, lp);

我已经尝试调用mScrollLayout.invalidate();添加内容后,但这无济于事。我注意到的是,如果未在滚动视图中设置 android:fillViewport =“ true” ,它的高度将非常低,并且仅显示相对布局的一部分。

如果我将relativeLayout的高度设置为例如2000dp,则该容器是可滚动的,但只显示了relativeLayout实际内容的一小部分。

编辑:可能很重要:内容从下至上添加,每个都有类似的属性

lp.addRule(RelativeLayout.ABOVE, button2.getId(););

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,如果要以编程方式添加视图,则必须调用requestLayout()方法来刷新视图,以使wrap_content起作用

只需:

mRouteLayout.requestLayout();