Android 使用我动态创建的每个编辑文本视图动态创建十字(X)按钮

Android 使用我动态创建的每个编辑文本视图动态创建十字(X)按钮,android,android-edittext,android-button,Android,Android Edittext,Android Button,我正在做的是,我正在创建一个按钮点击编辑文本视图。我想要的是,一旦一个编辑文本视图出现,一个小按钮也会出现在它的右边(有(X)个图像(这样,我就可以删除那个特定的编辑文本视图)。我可以生成编辑文本视图,但不知道如何创建按钮。请指导或帮助我。您只需以与EditText视图相同的方式创建一个新按钮,其中包含一个x,并将其与EditText字段的右侧对齐,然后在按钮上执行onclicklistener,该按钮将调用db或您正在使用的任何命令删除实际文本,然后可以从布局中删除“查看”和“编辑”按钮。但是

我正在做的是,我正在创建一个按钮点击编辑文本视图。我想要的是,一旦一个编辑文本视图出现,一个小按钮也会出现在它的右边(有(X)个图像(这样,我就可以删除那个特定的编辑文本视图)。我可以生成编辑文本视图,但不知道如何创建按钮。请指导或帮助我。

您只需以与EditText视图相同的方式创建一个新按钮,其中包含一个x,并将其与EditText字段的右侧对齐,然后在按钮上执行onclicklistener,该按钮将调用db或您正在使用的任何命令删除实际文本,然后可以从布局中删除“查看”和“编辑”按钮。但是,从您提供的代码中,我看不到任何与正在实现的onClickListener有关的内容。

以下是我的实现

<CustomEditText
    android:id="@+id/edittext1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableRight="@drawable/ic_action_cancel"
    android:ems="10"
    android:focusable="true"
    android:singleLine="true"
    android:textColor="#000" />
public class CustomEditText extends EditText {

    private Drawable drawableRight;
    int actionX, actionY;

    public CustomEditText(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
    }

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomEditText(Context context) {
        super(context);
    }

    @Override
    public void setCompoundDrawables(Drawable left, Drawable top,
            Drawable right, Drawable bottom) {
        if (right != null) {
            drawableRight = right;
        }
        super.setCompoundDrawables(left, top, right, bottom);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Rect bounds;
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            actionX = (int) event.getX();
            actionY = (int) event.getY();
            // this works for left since container shares 0,0 origin with bounds
            if (drawableRight != null) {
                bounds = null;
                bounds = drawableRight.getBounds();
                int x, y;
                int extraTapArea = 13;
                int extraTapArea = 20;
                x = (int) (actionX + extraTapArea);
                y = (int) (actionY - extraTapArea);
                x = getWidth() - x;
                if (x <= 0) {
                    x += extraTapArea;
                }
                if (y <= 0)
                    y = actionY;
                if (bounds.contains(x, y)) {
                    setText("");
                    return false;
                }
                return super.onTouchEvent(event);
            }
        }
        return super.onTouchEvent(event);
    }
}