我建議你創建一個自定義組件。事情是這樣的:
public class DeletableImageView extends LinearLayout {
private ImageView mImage;
private Button mButton;
DeletableImageListener mListener
public DeletableImageView(Context context) {
super(context);
init(context);
}
public DeletableImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public DeletableImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
setOrientation(LinearLayout.VERTICAL);
inflate(context, R.layout.deletable_image, this);
initViews();
}
private void initViews() {
mImage= (ImageView) findViewById(R.id.image);
mButton= (Button) findViewById(R.id.delete_button);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (mListener != null) {
mListener.deleteMe(DeletableImageView.this);
}
}
}
}
public void setListener(DeleteableImageListener listener) {
mListener = listener;
}
public interface DeletableImageListener {
void deleteMe(DeletableImageView me);
}
public void setImage(Drawable drawable) {
mImage.setBackground(drawable);
}
}
R.layout.deletable_image
是一個正常的XML的佈局<merge>
爲根元素(因爲DeletableImageView已經是一個的LinearLayout內合併,標籤你有ImageView的和按鈕
<merge xmlns="...">
<ImageView android:id="@+id/image" .../>
<Button android:id="@+id/delete_button" .../>
</merge>
。
在你的代碼不添加ImageView的,但你的自定義組件,並設置監聽器回調,這樣你就可以再次刪除自定義組件。
RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl);
final DeletableImageView div = new DeletableImageView(this);
div.setImage(...); // add this method to DeletableImageView
div.setListener(this);
// either implement these in your custom component or directly set it in the <ImageView> in R.layout.deletable_image
div.setScaleType(...);
div.setPadding(2, 2, 2, 2);
rl.addView(div);
最後一步是執行deleteMe(DeletableImageView me)
。您必須持有對您的RelativeLayout的參考,它應該可以通過調用rl.removeView(me);
您能澄清你想達到的目標嗎?它有點不清楚。 – Shaishav
嗨Shaishav,其實我動態地在圖像上添加表情符號,但我也需要添加刪除選項與表情符號。用戶可以添加更多的表情符號,如果他們不需要,他們也可以刪除。 –
而且每個表情符號都可以在圖像中移動,所以如果表情符號移動,則附加的刪除圖標也應該移動。 –