我动态添加自定义视图,但是当我更改参数(高度,宽度),视图消失或者我只是添加标准参数时它正常工作。问题是什么? 我正在尝试动态添加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();
}
});
答案 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。