2017-04-11 73 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