我创建了一个应该显示按钮表的片段。我使用表格布局来创建表格。但按钮表不会显示在片段中。与此代码有关的问题是什么?如何克服这个问题?
public void onViewCreated(View view,Bundle savedInstanceState) { super.onViewCreated(view,savedInstanceState); ArrayList buttons = new ArrayList();
ScrollView sv = new ScrollView(this.getActivity());
//Set a TableLayout to add buttons
TableLayout tl= new TableLayout(getActivity());
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
tl.setLayoutParams(params);
tl.setOrientation(TableLayout.HORIZONTAL);
for(int i=0;i<5;i++){
TableRow row=new TableRow(this.getActivity());
LayoutParams paramrow = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
row.setLayoutParams(paramrow);
for(int j=0;j<2;j++){
Button button = new Button(getActivity());
button.setText("testing");
button.setPadding(5, 5, 5, 5);
LayoutParams parab = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
button.setLayoutParams(parab);
row.addView(button);
buttons.add(button);
}
tl.addView(row);
}
sv.addView(tl);
}
答案 0 :(得分:0)
您在至少两个地方使用了错误类型的LayoutParams。视图需要使用与其容器对应的LayoutParams类型。因此,直接包含在TableLayout中的视图(即TableRows)应该使用TableLayout.LayoutParams
。 TableRows中包含的视图 - 在这种情况下是按钮 - 应该使用TableRow.LayoutParams
。最后,TableLayout位于ScrollView中,因此它应该使用ScrollView.LayoutParams
,实际上是FrameLayout.LayoutParams
,因为ScrollView扩展了FrameLayout。
您似乎也没有在任何地方将ScrollView添加到Fragment的视图中。我也要提一下,在布局xml中定义ScrollView和TableLayout可能更好,在onCreateView()
中扩展这个布局,并动态创建只需要的东西 - 即TableRows和Buttons。