我尝试以编程方式创建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。无论如何,没有任何图像视图显示。我对这一切都很陌生,所以我确定我做了各种各样的错误。谢谢你提前!
答案 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);
}