通过sql循环动态地将多个TextView添加到TableRow

时间:2015-12-30 22:09:24

标签: android textview android-linearlayout tablerow

我在这里搜索过,但我似乎无法解决这个问题。我有一个ScrollView,在ScrollView内是LinearLayout,我想读取我的SQL数据库并显示结果如此;

Linear Layout
    ScrollView
        Linear Layout
            TableRow
               TextView
               TextView
            TableRow
               TextView
               TextView
        /Linear Layout
    /ScrollView
/LinearLayout

我的代码如下:

TableRow tRow;
            ContextThemeWrapper ttRow = new ContextThemeWrapper(this, R.style.coreTable);
            LinearLayout LL = (LinearLayout) findViewById(R.id.linearCores);
            LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);



            if (cores.moveToFirst()) {
                while (cores.isAfterLast() == false) {
                    Log.e("CORE LIST", cores.getString(1));
                    tRow = new TableRow(ttRow);
                    tRow.setLayoutParams(lp);
                    tRow.setOrientation(TableRow.VERTICAL);
                    tRow.setId(cores.getInt(0));
                    tRow.setBackgroundResource(R.drawable.shape_border);
                    ContextThemeWrapper newTxtA = new ContextThemeWrapper(this, R.style.coreHeaderView);
                    TextView tTextA = new TextView(newTxtA);
                    tTextA.setLayoutParams(lp);
                    tTextA.setText(cores.getString(1) + " (Lvl " + cores.getString(2) + ")");
                    tRow.addView(tTextA);
                    TextView tTextB = new TextView(coreChooser.this);
                    tTextB.setLayoutParams(lp);
                    tTextB.setText(cores.getString(5));
                    tRow.addView(tTextB);
                    LL.addView(tRow);
                    cores.moveToNext();
                }
            }

在我的模拟器上,它会显示第一个tRow.addView,但不显示其余部分,但是背景似乎会延伸过去的屏幕。

我真的不确定我在这里做错了什么。

1 个答案:

答案 0 :(得分:3)

TableRow的文档说明如下:

  

TableRow应始终用作TableLayout的子级。如果TableRow的父级不是TableLayout,则TableRow将表现为水平LinearLayout

如果您的目的是让每对TextView分享共同背景R.drawable.shape_border,那么请使用嵌套LinearLayout代替TableRow(无论如何,TableRow已从LinearLayout延长。

或者,如果您绝对想要使用TableRow的某些特定功能,请将R.id.linearCores改为TableLayout而不是LinearLayout