-1

我动态添加了一个自定义视图,但是当我更改参数(高度、宽度)时,视图消失了,或者如果我只是使用标准参数添加它,它可以正常工作。有什么问题?我正在尝试动态添加此部分并影响部分的新参数。

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();



            }
        });
4

1 回答 1

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,您不必执行 width/n 等操作。您只需继续向条形添加部件,部件的宽度应自动设置。

HTH。

于 2013-09-27T15:57:44.017 回答