表格布局没有出现在片段中?

时间:2014-09-15 17:02:25

标签: android android-fragments tablelayout

我创建了一个应该显示按钮表的片段。我使用表格布局来创建表格。但按钮表不会显示在片段中。与此代码有关的问题是什么?如何克服这个问题?

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

1 个答案:

答案 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。