AndroidでクラスExcelの表を作成し、データを埋め込む方法
8343 ワード
この間、運営ニーズに応じて、データを表示するための小さなDemoを作成しました.この過程で、Excel表のような表示効果をコードで作ることを学びました.次はみんなと共有します.
表形式のレイアウトを作るには、表レイアウトを考えやすいので、まずlayoutを新規作成します.このlayoutには2つのTableLayoutを入れます.そのうちの1つは表のタイトルを表示するために使用され、もう1つのTableLayoutはデータを表示するために使用されます.表示される可能性のあるデータが多いことを考慮して、パンの上のScrollViewです.主なコードは次のとおりです.
同様に、次のテーブルレイアウトも同様に2つのforループで実現されますが、最外層ループはサーバから送られてきたリストサイズによって決定されます.
私たちの携帯電話は通常書評なので、表示が不十分だったり、見にくいという問題を引き起こす可能性があります.setContentView()メソッドの前に、このページに入ると横画面に表示されることを保証する判断を加えました.
表形式のレイアウトを作るには、表レイアウトを考えやすいので、まずlayoutを新規作成します.このlayoutには2つのTableLayoutを入れます.そのうちの1つは表のタイトルを表示するために使用され、もう1つのTableLayoutはデータを表示するために使用されます.表示される可能性のあるデータが多いことを考慮して、パンの上のScrollViewです.主なコードは次のとおりです.
レイアウトファイルを作成すると、私のコードに書かれているaddWidget()メソッドというデータの埋め込みが始まります.データはjsonタイプの偽データを作成し、新しいオブジェクトクラスを作成して解析するので、これは多くありません.まず、主なデータを埋め込むコードを見てみましょう.まず表のタイトル、つまり私たちがよく見ている表の一番上の欄です.主なコードは次のとおりです.
for (int j = 0; j < 1; j++) {
TableRow localTableRow1 = new TableRow(this);
localTableRow1.setBackgroundColor(getResources().getColor(R.color.realtime_table_bg));
for (int k = 0; k < this.column; k++) {
TextView localTextView1 = new TextView(this);
localTextView1.setWidth(this.viewWidth);
localTextView1.setBackgroundResource(R.drawable.table_shape_title);
localTextView1.setGravity(17);
localTextView1.setTextSize(2, 16);
localTextView1.setTextColor(getResources().getColor(R.color.white));
localTextView1.getPaint().setFakeBoldText(true);
localTextView1.setSingleLine();
switch (k) {
default:
break;
case 0:
localTextView1.setText("A");
localTableRow1.addView(localTextView1);
break;
case 1:
localTextView1.setText("B");
localTableRow1.addView(localTextView1);
break;
case 2:
localTextView1.setText("C");
localTableRow1.addView(localTextView1);
break;
case 3:
localTextView1.setText("D");
localTableRow1.addView(localTextView1);
break;
case 4:
localTextView1.setText("E");
localTableRow1.addView(localTextView1);
break;
case 5:
localTextView1.setText("F");
localTableRow1.addView(localTextView1);
break;
case 6:
localTextView1.setText("G");
localTableRow1.addView(localTextView1);
break;
case 7:
localTextView1.setText("H");
localTableRow1.addView(localTextView1);
}
}
this.tb_title.addView(localTableRow1, new TableLayout.LayoutParams(-1, -2));
}
このデータの充填を2つのforサイクルで実現し,最外層forサイクルが「j<1」と判断したのは,ここで1行で十分であるからである.ここにTabRowを新規作成し、この行に列を追加します.裏層のこのforループのcolumnは私たちの列数です.ここではA~Hで私たちの列タイトル名を表し、1つのforループで新しいTextViewを新規作成するたびに、何列目かを判断し、位置によって順番に私たちの列名を加えます.最後にtb_タイトル、つまり私たちのタイトルに対応するこのTableLayoutにこれらのviewを追加します.同様に、次のテーブルレイアウトも同様に2つのforループで実現されますが、最外層ループはサーバから送られてきたリストサイズによって決定されます.
私たちの携帯電話は通常書評なので、表示が不十分だったり、見にくいという問題を引き起こす可能性があります.setContentView()メソッドの前に、このページに入ると横画面に表示されることを保証する判断を加えました.
if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
しかし、実行後にエラーが発生し、その後、このactivityが画面表示方向を設定していないため、最後にリストファイルに次のコードを追加すればいいことに気づきました.android:screenOrientation="sensorLandscape"
表レイアウトの実装と運用はここまで紹介されています.demoダウンロードアドレス:http://download.csdn.net/detail/shan286/9475782