Android:我以编程方式在TableRow中设置imageView的大小时出错

时间:2015-02-17 17:11:02

标签: android

当我尝试设置我的ImageView对象的大小时,我总是有同样的错误:

尝试写入字段' int android.view.ViewGroup $ LayoutParams.width'在空对象引用上

我的一段代码:

    TableLayout tl = (TableLayout)findViewById(R.id.layoutDuNiveau);
    for(int j=0;j<hauteurDuNiveau;j++){
        TableRow tr = new TableRow(this);
        tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
        for(int i=0;i<largeurDuNiveau;i++){
            imageViewDuNiveau[i][j] = new ImageView(this);
            imageViewDuNiveau[i][j].setImageResource(R.drawable.blanc);
            imageViewDuNiveau[i][j].requestLayout();
            imageViewDuNiveau[i][j].getLayoutParams().width = 20; // ERROR HERE
            imageViewDuNiveau[i][j].getLayoutParams().height = 20; // ERROR HERE


            switch(tableauDuNiveau[i][j]){
                case '#':
                    imageViewDuNiveau[i][j].setImageResource(R.drawable.mur);
                default:
            }
            tr.addView(imageViewDuNiveau[i][j]);
        }
        tl.addView(tr);
    }

1 个答案:

答案 0 :(得分:4)

如下所示:

View.getLayoutParams ()

  

如果此View未附加到父级,则此方法可能返回null   ViewGroup或setLayoutParams(android.view.ViewGroup.LayoutParams)是   没有成功调用。将视图附加到父级时   ViewGroup,此方法不能返回null

要解决问题调用,请在访问trwidth之前将ImageView添加到height

tr.addView(imageViewDuNiveau[i][j]);
imageViewDuNiveau[i][j].getLayoutParams().width = 20; 
imageViewDuNiveau[i][j].getLayoutParams().height = 20;