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

时间:2014-02-08 07:49:04

标签: android android-edittext android-button

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这是我的实施

<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" />

其中ic_action_cancelx图标。 以下是自定义Edittext类

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);
    }
}