Android:动态地使用layoutinflater进行自定义布局

时间:2014-02-21 13:07:08

标签: android android-layout

我正在进行视频会议APP,我有一个framelayout,它将使用surfaceview来呈现视频,而Button可以结束该参与者的呼叫。

由于可以动态添加参与者,因此在创建新用户时,我必须对此布局进行充气。

这个膨胀的布局将被添加到tablelayout中,以便我可以容纳许多我想要的订单的布局/用户。

我正在给FrameLayout充气,如:

participantHolder.mParticipantFrameLayout = (FrameLayout)mInflater.inflate(R.layout.generic_paritcipant_layout, null);

我正在使用以下方法获取此布局中的表面视图按钮:

//get the Dropuser button
participantHolder.mParticipantDropButton = (ImageButton)mFrameLayt.findViewById(R.id.ParticipantDropButton);
//get the surfaceview
participantHolder.mParticipantSurfaceView = (SurfaceView)mFrameLayt.findViewById(R.id.ParticipantSurfaceView);

并通过设置布局参数将布局添加到表格行中。

TableRow.LayoutParams PreviewLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT);
PreviewLayoutParams.weight = 1;
CurrentParticpant.mParticipantUIHolder.mParticipantFrameLayout.setLayoutParams(PreviewLayoutParams);
CurrentParticpant.mParticipantUIHolder.mParticipantFrameLayout.invalidate();
mTableRowOne.addView(CurrentParticpant.mParticipantUIHolder.mParticipantFrameLayout);
mTableRowOne.invalidate();
mTableLayoutReference.invalidate();

但我根本无法看到视图/布局,如果我做错了,请告诉我

1 个答案:

答案 0 :(得分:0)

我认为问题在于:

TableRow.LayoutParams PreviewLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT);

第一个参数表示宽度,您将其设置为0.请尝试以下操作:

TableRow.LayoutParams PreviewLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT, 1);

使用这样的构造函数,您不需要添加PreviewLayoutParams.weight = 1; http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html#TableRow.LayoutParams%28int,%20int,%20float%29