0

私は数時間頭の上に座っていましたが、この奇妙な問題の解決策をまだ見つけていません. 私の要件は、ヘッダーとコンテンツを含むテーブル レイアウトを動的に作成する必要があるということです。

これは、テーブル レイアウトを動的に生成するために使用するコードです。

TableLayout tableLayout = (TableLayout)findViewById(R.id.tabContentLayout);
tableLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
tableLayout.removeAllViews();

for(int i=0;i<rows.length;i++){
                Log.d("Rows",rows[i]);
                String row  = rows[i];
                TableRow tableRow = new TableRow(getApplicationContext());
                tableRow.setBackgroundResource(R.drawable.cell_shape);
                tableRow.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
                final String[] cols = row.split(";");

                Log.i(LOG_CLASS, "<<---- Columns count : " + cols.length + " ---->>");

                for (int j = 0; j < cols.length; j++) {             
                    final String col = cols[j];                                 
                    TextView columsView = new TextView(getApplicationContext());
                    columsView.setBackgroundResource(R.drawable.cell_header);
                    columsView.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
                    columsView.setTextColor(color.white);
                    columsView.setTextSize(TypedValue.COMPLEX_UNIT_SP,15);
                    columsView.setGravity(Gravity.CENTER);
                    columsView.setText(String.format("%7s", col));
                    Log.d("Cols", String.format("%7s", col));
                    tableRow.addView(columsView);                
                    }
//               tableLayout.addView(tableRow,new TableLayout.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT));
                tableLayout.addView(tableRow);

            }

            tableLayout.requestLayout();

行は;で区切られたエントリを含みますString[]

例:Apple;10/25/2013;10/25/2014;Srivatsa

最新の更新 : 実際には、コンテンツ ビューはエミュレーターでかすかに表示されます(ただし、これは電話では表示されません)。今必要なのは、テキストを UI で判読できるようにすることだけです。

エミュレーター - スクリーンショット

4

2 に答える 2

0

それに 1 の重みを追加してみてください。

tableRow.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT, 1));

TableRow に重みを設定すると、最近見た別のレイアウトの問題が解決されました。だから、それは一撃の価値があります。

于 2013-11-08T21:41:07.053 に答える
0
// try this
 TableLayout tableLayout = (TableLayout)findViewById(R.id.tabContentLayout);
        tableLayout.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,TableLayout.LayoutParams.WRAP_CONTENT));
        tableLayout.removeAllViews();

        for(int i=0;i<rows.length;i++){
            Log.d("Rows",rows[i]);
            String row  = rows[i];
            TableRow tableRow = new TableRow(this);
            tableRow.setBackgroundResource(R.drawable.cell_shape);
            tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
            final String[] cols = row.split(";");

            Log.i(LOG_CLASS, "<<---- Columns count : " + cols.length + " ---->>");

            for (int j = 0; j < cols.length; j++) {
                final String col = cols[j];
                TextView columsView = new TextView(getApplicationContext());
                columsView.setBackgroundResource(R.drawable.cell_header);
                columsView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
                columsView.setTextColor(color.white);
                columsView.setTextSize(TypedValue.COMPLEX_UNIT_SP,15);
                columsView.setGravity(Gravity.CENTER);
                columsView.setText(String.format("%7s", col));
                Log.d("Cols", String.format("%7s", col));
                tableRow.addView(columsView);
            }
            tableLayout.addView(tableRow);

        }

        tableLayout.requestLayout();
于 2013-11-08T07:17:31.613 に答える