2017-04-11 6 views
1

programmaticly

TableRow row = new TableRow(this); 
TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT); 
lp.setMargins(0,5,0,0); 
row.setLayoutParams(lp); 
List<List<String>> cList2 = displayTemp.getCList2(); 
StringBuffer sb = new StringBuffer(); 
List<String> lStr = cList2.get(0); 
for (int ix = 0; ix < lStr.size(); ix++) { 
    sb.append(lStr.get(ix)); 
    if (ix != lStr.size() - 1) { 
     sb.append("\n"); 
    } 
} 
TextView tv = new TextView(this); 
tv.setLayoutParams(new TableRow.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f)); 
tv.setText(sb.toString()); 
tv.setTextSize(COMPLEX_UNIT_DIP, 20); 
row.addView(tv); 
byte[] decodedString = Base64.decode(cList2.get(1).get(0), Base64.DEFAULT); 
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,decodedString.length); 
ImageView iView = new ImageView(this); 
iView.setImageBitmap(decodedByte); 
row.addView(iView); 
tableLayout2.addView(row, rowNum); 
rowNum++; 

これは、動的にテーブルの行を表示します。私の2番目の表のセルは、このコードで表示されます。

byte[] decodedString = Base64.decode(cList2.get(1).get(0), Base64.DEFAULT); 
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,decodedString.length); 
ImageView iView = new ImageView(this); 
iView.setImageBitmap(decodedByte); 
row.addView(iView); 

2番目のセルに表示される画像は、現在右寄せです。私はこれをセルの中心に合わせて表示したい。どうやってやるの?

答えて

1

することがあり、各セルに罫線を適用する直接的な方法はありませんが、あなたはアンドロイドを使用して手動でそれを行うことができます

tv.setGravity(Gravity.CENTER); 
row.setGravity(Gravity.CENTER); 

OR

LayoutParams lp = new LayoutParams(); 
lp.gravity = Gravity.CENTER; 
tv.setLayoutParams(lp); 
row.setGravity(Gravity.CENTER); 
をお試しください:背景=「描画可能/ cell_border @」どこ君はそれが要る。

cell_border.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape= "rectangle" > 
    <solid android:color="#000"/> 
    <stroke android:width="1dp" android:color="#ff9"/> 
</shape> 
+0

これは私のために動作しません。どのようにして、テーブルの各セルの周りに(いくつかのピクセルのような厚さの)境界線を表示して、セルの子(TextViewやImageViewなど)のアライメントを簡単に視覚化できます。 – mukul

+0

答えを更新しました – Pehlaj

2

最終的なコード

TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT); 
//rest of code 
lp.gravity = Gravity.CENTER; 
row.setLayoutParams(lp); 

Gravityは、オプションの下にあり

lp.gravity = Gravity.CENTER; 

コードの行の下に追加します。

Gravity.CENTER_HORIZONTAL
Gravity.CENTER_VERTICAL