我正在通过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(););
答案 0 :(得分:0)
如果我没记错的话,如果要以编程方式添加视图,则必须调用requestLayout()方法来刷新视图,以使wrap_content起作用
只需:
mRouteLayout.requestLayout();