Android以编程方式创建的ImageView无法显示

时间:2015-05-22 04:32:32

标签: java android imageview

我尝试以编程方式创建ImageViews数组。这是我的代码(i和j代表计数器)

imageViews = new ArrayList<ImageView>();
    for(int i = 0; i < 3; i++){
        for(int j = 0; j < 3; j++){
            if(3*i+j != 8) {
                ImageView subImage = new ImageView(this);
                subImage.setImageBitmap(pieces.get(3 * i + j));
                LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(100, 100);
                subImage.setLayoutParams(lp);
                subImage.setX(i * 100f);
                subImage.setY(j * 100f);
                subImage.setVisibility(View.VISIBLE);
                imageViews.add(subImage);
            }
        }
    }

件是位图的arraylist。无论如何,没有任何图像视图显示。我对这一切都很陌生,所以我确定我做了各种各样的错误。谢谢你提前!

4 个答案:

答案 0 :(得分:2)

您必须在布局对象中添加视图,如下所示。

layout_object.addView(subImage);

最后你必须设置你想要显示的视图如


setContentView(layout_object);

希望这个答案对你有用。

答案 1 :(得分:1)

你必须在xml文件中创建布局

<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/linearLayout"
    android:orientation="vertical">

</LinearLayout>

并在java文件中

LinearLayout layout=(LinearLayout)view.findViewById(R.id.linearLayout);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                                android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,
                                android.widget.LinearLayout.LayoutParams.WRAP_CONTENT);
    imageViews = new ArrayList<ImageView>();

        for(int i = 0; i < 3; i++){
            for(int j = 0; j < 3; j++){
                if(3*i+j != 8) {
                    ImageView subImage = new ImageView(this);
                    subImage.setImageBitmap(pieces.get(3 * i + j));                        
                    subImage.setVisibility(View.VISIBLE);
                    subImage.setLayoutParams(params);
                    imageViews.add(subImage);

                    layout.addView(subImage);

                }
            }
        }

注意如果你有更多的图像没有在屏幕上设置,那么首先创建Scrollview并在那里放置线性布局

答案 2 :(得分:1)

您已创建了所有图片视图,但您需要一个布局来显示这些图片。让我们说一个LinearLayout,所以首先在你的xml文件中创建一个布局,

<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/myLinearLayout"
    android:orientation="vertical">

</LinearLayout>

现在,在此布局中添加图像。

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.myLinearLayout);
imageViews = new ArrayList<ImageView>();
    for(int i = 0; i < 3; i++){
        for(int j = 0; j < 3; j++){
            if(3*i+j != 8) {
                ImageView subImage = new ImageView(this);
                subImage.setImageBitmap(pieces.get(3 * i + j));
                LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(100, 100);
                subImage.setLayoutParams(lp);
                subImage.setX(i * 100f);
                subImage.setY(j * 100f);
                subImage.setVisibility(View.VISIBLE);
                imageViews.add(subImage);

            }
        }
    }

for(int i=0; i< imageViews.size(); i++){ // iterating through the arraylist and adding the images to the linearlayout
    mylinearLayout.addView(imageViews.get(0));
}

答案 3 :(得分:0)

你有imageview对象的arraylist .. 只需迭代此数组列表并添加到主父布局

假设您的主要布局是RelativeLayout

<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mainlayout">
</LinearLayout>

将此对象保存在java代码中

RelativeLayout rl=(RelativeLayout)findViewById(R.id.mainlayout);
//now iterate the arraylist of imageviews
for(ImageView iv:imageViews)
{
    rl.addView(iv);
}