我现在已经尝试了几个小时,在stackoverflow上寻找解决方案。 所有适用于他人的解决方案对我来说都不起作用,所以也许我在这里缺少一些东西。
public void show(View layout){
RelativeLayout linear = (RelativeLayout)layout.findViewById(R.id.linear);
for(int i = 0; i < map.size(); i++){
for(int j = 0; j < map.get(i).size(); j++){
ImageView image = new ImageView(context);
switch(map.get(i).get(j)){
case 0:
image.setImageDrawable(context.getDrawable(R.drawable.black));
break;
case 1:
image.setImageDrawable(context.getDrawable(R.drawable.white));
break;
}
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(32,32);
params.setMargins(j * 32, i * 32, 0, 0);
image.setLayoutParams(params);
image.invalidate();
linear.addView(image);
}
}
}
它必须绘制的图像是从零和一的文本文件中读取的。 因为下面的函数是一个类而不是一个活动,我传递了ImageViews所必须的布局。
解决:
这就是我修复它的方法:
public void show(View layout){
RelativeLayout linear = (RelativeLayout)layout.findViewById(R.id.linear);
int imageRes;
for(int i = 0; i < map.size(); i++){
for(int j = 0; j < map.get(i).size(); j++){
ImageView image = new ImageView(context);
switch(map.get(i).get(j)){
case '0':
imageRes = R.drawable.black;
break;
case '1':
imageRes = R.drawable.white;
break;
default:
imageRes = R.drawable.white;
break;
}
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(32,32);
params.setMargins(j * 32, i * 32, 0, 0);
image.setLayoutParams(params);
image.setBackgroundResource(imageRes);
linear.addView(image);
}
}