如何删除LinearLayout中的ImageView

时间:2017-02-09 11:53:29

标签: java android

在我的应用中,我从图库中选择照片并以编程方式将其插入LinearLayout内,所以我这样做了:

<LinearLayout
            android:orientation="horizontal"
            android:id="@+id/linearImages"
            android:layout_width="wrap_content"
            android:layout_height="150dp">
            <Button
                android:layout_gravity="center"
                android:id="@+id/add_btn"
                android:gravity="center"
                android:drawableLeft="@drawable/add_icon"
                android:layout_marginLeft="10dp"
                android:layout_marginStart="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>

我设置了一张标签,上面写着我的照片:

public void AddNewImages(Context context,Bitmap bitmap){
    ImageView img = new ImageView(context);
    img.setScaleType(ImageView.ScaleType.FIT_XY);
    img.setImageBitmap(bitmap);
    img.setTag(tagCount);
    linearImages.addView(img);
    bitmapArray.add(bitmap);
    tagCount++;
}

我想通过点击删除图像,正如我之前所说,图像是以编程方式添加的,所以我需要一些东西来逐个删除图像,而不需要静态的图像位置。

2 个答案:

答案 0 :(得分:4)

我建议使用RecyclerView LinearLayout的{​​{1}}。原因是你可以轻松获得点击项目的位置,并可以相应地删除。如果您想使用自己的解决方案,我建议您在添加的每个setOclickListener上添加ImageView。在点击事件之后的监听器中获取imagView.getTag(),这是LinearLayout内图像视图的位置。然后,您可以使用以下内容从LinearLayout删除图片视图:

ll.removeViewAt(position);// to remove view from particular position

或者,如果您要删除ImageView,请直接点击:

ll.removeView(view)// to remove particular view

答案 1 :(得分:1)

更新你的AddNewImages代码它会起作用。

public void AddNewImages(Context context,Bitmap bitmap){
        ImageView img = new ImageView(context);
        img.setScaleType(ImageView.ScaleType.FIT_XY);
        img.setImageBitmap(bitmap);
        img.setTag(tagCount);
        linearImages.addView(img);
        bitmapArray.add(bitmap);
        tagCount++;
        img.setOnClickListener(clickListner);
        View.OnClickListener clickListner=new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                linearImages.removeView(v);
            }
        };
    }