在我的应用中,我从图库中选择照片并以编程方式将其插入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++;
}
我想通过点击删除图像,正如我之前所说,图像是以编程方式添加的,所以我需要一些东西来逐个删除图像,而不需要静态的图像位置。
答案 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);
}
};
}