在更改android中的参数后,视图消失

时间:2013-09-27 14:46:58

标签: android android-view

我动态添加自定义视图,但是当我更改参数(高度,宽度),视图消失或者我只是添加标准参数时它正常工作。问题是什么? 我正在尝试动态添加the parts of this并影响部件的新参数。

xml代码:

<RadioGroup
    android:id="@+id/prog"
    android:layout_width="fill_parent"
    android:layout_height="35dip"
    android:layout_gravity="center"
    android:layout_margin="10sp"
    android:orientation="horizontal"
    android:textAlignment="center" >
</RadioGroup>

实施代码:

bar = (RadioGroup) getView().findViewById(R.id.prog);
int width = bar.getWidth();
RadioGroup.LayoutParams lparams = new RadioGroup.LayoutParams(width / 2,
                    height);
SegmentedControlButton part = new SegmentedControlButton(getActivity());
part.setLayoutParams(lparams);
bar.addView(part);

一部分它可以工作,但有两部分它消失了。 我试图检查宽度的值,它是0,但我在OnViewCreated中调用方法,所以通常在那里准备视图。

PS:我使用片段 的更新: 我在OnViewCreated中尝试了此实现,但仍然0

ViewTreeObserver vto = bar.getViewTreeObserver();
        vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {

                width = bar.getWidth();



            }
        });

1 个答案:

答案 0 :(得分:1)

首先,使用ViewTreeObserver获取条形的非零和非零宽度。有关如何执行此操作的示例是here

您必须更换

RadioGroup.LayoutParams lparams = new RadioGroup.LayoutParams(width / 2, height); 

RadioGroup.LayoutParams lparams = new RadioGroup.LayoutParams(0, height, 1.0);

通过将layout_weight属性设置为1,您不必执行宽度/ n等。您只需继续向条形添加零件,并且应自动设置零件的宽度。

HTH。