【问题标题】:TableLayout with pagination带分页的表格布局
【发布时间】:2013-03-20 21:19:33
【问题描述】:

我想用分页实现TableLayout,在第 1 页显示 10 条记录,然后在第 2 页显示下 10 条记录,依此类推...我正在使用Table Layout,但我没有得到所需的结果.使用本教程,表格只是水平而不是垂直增长。如何更改它以使其也垂直增长,然后当记录大小大于 10 时转移到下一页?

代码:

public class Sample extends Activity {
 String companies[] = {"Google","Windows","iPhone","Nokia","Samsung",
         "Google","Windows","iPhone","Nokia","Samsung",
         "Google","Windows","iPhone","Nokia","Samsung","Google","Windows","iPhone","Nokia","Samsung",
         "Google","Windows","iPhone","Nokia","Samsung",
         "Google","Windows","iPhone","Nokia","Samsung"};
 String os[]       =  {"Android","Mango","iOS","Symbian","Bada",
         "Android","Mango","iOS","Symbian","Bada",
         "Android","Mango","iOS","Symbian","Bada","Android","Mango","iOS","Symbian","Bada",
         "Android","Mango","iOS","Symbian","Bada",
         "Android","Mango","iOS","Symbian","Bada"};
 TextView companyTV,valueTV,deviceTv,actionTv,dateTv,timeTv,creditTv;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // creates the Pagination Layout
    PaginationLayout paginationLayout = new PaginationLayout(this);
    paginationLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

    // creates content only for sample
    TableLayout table = new TableLayout(this);
    //table.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));


    TableRow row = new TableRow(this);
    row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    table.addView(row);

    TableRow row2 = new TableRow(this);
    row2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    table.addView(row2);
    for (int i=0;i<companies.length;i++)
    {
        deviceTv = new TextView(this);
        deviceTv.setText(companies[i]);
        deviceTv.setTextColor(Color.RED);
        deviceTv.setTypeface(Typeface.DEFAULT, Typeface.BOLD);

        deviceTv.setPadding(5, 5, 5, 5);
        row2.addView(deviceTv);
        actionTv = new TextView(this);
        actionTv.setText(os[i]);
        actionTv.setTextColor(Color.GREEN);

        actionTv.setPadding(5, 5, 5, 5);
        actionTv.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        row2.addView(actionTv); // Adding textView to tablerow.
    }

   /* for(int i = 0; i< 50;i++){
        Button button = new Button(this);
        button.setText("Button " + i);
        if (i%2==0) {
            row.addView(button);
        } else {
            row2.addView(button);
        }
    }*/

    // add the content in pagination
    paginationLayout.addView(table);
    // set pagination layout
    setContentView(paginationLayout);
}

【问题讨论】:

    标签: android android-layout pagination android-tablelayout


    【解决方案1】:

    我已经使用了表格布局,但没有得到我需要的结果 使用本教程,它只是水平而不是垂直增长

    对于 github 上的代码,似乎在 PaginationLayout 上使用 addView 会将该视图添加到 HorizontalScrollView。在您的代码中,您正在创建一个 single Tablelayout 来添加行,您的内容垂直增长是正常的。

    您很可能需要自己插入页面,如下所示:

    // creates the Pagination Layout
    PaginationLayout paginationLayout = new PaginationLayout(this);
    LinearLayout wrapper = new Linearlayout(this);
    paginationLayout.addView(wrapper);
    // now create a TableLayout, if the content is bigger then your intended number of rows
    // then insert another Tablelayout and so on
    TableLayout table = new TableLayout(this);
        //table.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    TableRow row = new TableRow(this);
    row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    table.addView(row);
    TableRow row2 = new TableRow(this);
    row2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    table.addView(row2);
    wrapper.addView(table); // it will probably don't look good if you don't 
    // also setup the proper width with LayoutParams
    

    如果您继续添加 TableRows 并看到您已向 table 添加了 10 行,则创建一个新的 TableLayout 并将其添加到 包装器 LinearLayout.

    我建议您放弃该库并实现自己的分页。如果您没有与用户进行直接交互(通过触摸),那么设置ViewFlipper(有两个视图,两个页面,您将继续翻阅)非常简单,底部有两个按钮来控制分页。如果您还想要触摸交互,请使用ViewPager(还有一些工作要做)。

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      相关资源
      最近更新 更多