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