【问题标题】:Dynamically load 5 buttons on 1 row在 1 行上动态加载 5 个按钮
【发布时间】:2016-07-23 23:04:06
【问题描述】:

我在使用这个表格布局时遇到了一些困难,它应该在 5 个按钮后创建一个新行。当我添加 button.setText(lesson.getId()); 时它也会崩溃;

LesSelectionActivity.java

    public static final int LESSON_ROW_COUNT = 5;

    public void setButtonLessons() {

    //draw LesSelection
    setContentView(R.layout.activity_drumles);

    TableLayout layout = (TableLayout) findViewById(R.id.les_select_layout);

    int buttonIdCounter = 0;
    for (Lesson lesson : getArrayLesson()) {
        int columnCounter = 0;

        TableRow tr = new TableRow(this);
        TableRow.LayoutParams params = new TableRow.LayoutParams(
                TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
        params.setMargins(30, 0, 30, 0);
        tr.setLayoutParams(params);
        layout.addView(tr);

            if (columnCounter % LESSON_ROW_COUNT == 0) {
                tr = new TableRow(this);
                params = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
                        TableRow.LayoutParams.WRAP_CONTENT);
                params.setMargins(30, 0, 30, 0);
                tr.setLayoutParams(params);
                layout.addView(tr);
            }

            Button button = new Button(this);

            button.setId(buttonIdCounter);

          //button.setText(lesson.getId());

            button.setOnClickListener(this);
            button.setBackgroundResource(R.drawable.buttonsoranje);
            TableRow.LayoutParams paramsRow = new TableRow.LayoutParams(
                    TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);

            paramsRow.column = columnCounter % LESSON_ROW_COUNT;
            params.gravity = Gravity.CENTER_HORIZONTAL;


            tr.addView(button);

            buttonIdCounter++;
            columnCounter = (columnCounter + 1) % LESSON_ROW_COUNT;
        }

    }

那么,为什么 setText 不起作用而 setBackgroundResource 起作用? (请注意,我有“//”,因为它现在不工作,遮阳篷不是“删除//”)

为什么每行只有一个按钮?

【问题讨论】:

  • 我已经修好了,“for (Lesson course : getArrayLesson()) {”设置为高,将它放在 if 的上方,然后就可以了。

标签: java android tablelayout


【解决方案1】:

我假设lesson.getId(); 返回一个整数值 id。 setText() 需要一个字符串参数。你需要做button.setText(String.valueOf(lesson.getId()));

希望这会有所帮助!

【讨论】:

  • 是的!我不明白为什么它必须突然变成一个字符串,但很高兴这个问题得到了解决。还有一个问题,为什么每行只有1个按钮?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
相关资源
最近更新 更多