gpt4 book ai didi

java - 如何在编辑文本中添加可触摸的 ImageView ?

转载 作者:行者123 更新时间:2023-11-29 03:40:21 25 4
gpt4 key购买 nike

我需要在像 ms word 屏幕这样的编辑文本中添加一个可触摸的 ImageView 。我们如何为此目的设计一个 android 布局屏幕?我已经尝试了下面显示的代码:

public class edittext extends EditText 
{
public String defaultValue = "";
final Drawable imgX = getResources().getDrawable(android.R.drawable.presence_offline ); // X image

private Html.ImageGetter imageGetter;
public edittext(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
// TODO Auto-generated constructor stub
}
public edittext(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
// TODO Auto-generated constructor stub
}
public edittext(Context context)
{
super(context);
init();
// TODO Auto-generated constructor stub
}
void init() {

// Set bounds of our X button
imgX.setBounds(0, 0, imgX.getIntrinsicWidth(), imgX.getIntrinsicHeight());

// There may be initial text in the field, so we may need to display the button
manageClearButton();

edittext.this.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {

edittext et = edittext.this;

// Is there an X showing?
if (et.getCompoundDrawables()[2] == null) return false;
// Only do this for up touches
if (event.getAction() != MotionEvent.ACTION_UP) return false;
// Is touch on our clear button?
if (event.getX() > et.getWidth() - et.getPaddingRight() - imgX.getIntrinsicWidth()) {
et.setText("");
edittext.this.removeClearButton();
}
return false;
}
});

edittext.this.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {

edittext.this.manageClearButton();
}

public void afterTextChanged(Editable arg0) {
}

public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
});
}

void manageClearButton() {
if (this.getText().toString().equals("") )
removeClearButton();
else
addClearButton();
}
void addClearButton() {
this.setCompoundDrawables(this.getCompoundDrawables()[0],
this.getCompoundDrawables()[1],
imgX,
this.getCompoundDrawables()[3]);
}
void removeClearButton() {
this.setCompoundDrawables(this.getCompoundDrawables()[0],
this.getCompoundDrawables()[1],
null,
this.getCompoundDrawables()[3]);
}

}

有知道的请帮帮我谢谢

最佳答案

我就是这样做的。 Drawable 将位于 EditText 的右侧。请尝试代码。

EditText contactLine = new EditText(getActivity());
Drawable drawable = getActivity().getResources().getDrawable(...);
drawable.setBounds(new Rect(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()));
contactLine.setCompoundDrawables(null, null, drawable, null);
contactLine.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
Drawable co = v.getCompoundDrawables()[2];
if (co == null) {
return false;
}
if (event.getAction() != MotionEvent.ACTION_DOWN) {
return false;
}
if (event.getX() > v.getMeasuredWidth() - v.getPaddingRight()
- co.getIntrinsicWidth()) {
whatYouWantToDo();
return true;
} else {
return false;
}
}
});

关于java - 如何在编辑文本中添加可触摸的 ImageView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13453553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com