2017-04-11 70 views
1

我下面的代碼:如何中心對齊的ImageView在TableLayout細胞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++; 

此動態顯示錶行。我的第二個表格單元格中顯示此代碼,

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); 

在第二小區中顯示的圖像,目前右對齊。我想將它顯示爲單元格中心對齊。我怎樣才能做到這一點?

回答

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

添加以下代碼

lp.gravity = Gravity.CENTER; 

最終代碼

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

Gravity有以下選項線。

Gravity.CENTER_HORIZONTAL
Gravity.CENTER_VERTICAL