mEditText.setOnTouchListener(onTouchListener);
private View.OnTouchListener onTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction()) {
v.getParent().requestDisallowInterceptTouchEvent(true);
} else if (MotionEvent.ACTION_UP == event.getAction()) {
v.getParent().requestDisallowInterceptTouchEvent(false);
}
return false;
}
};
附:Adapter源码
public class EditWebsiteAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
public EditWebsiteAdapter(@Nullable List<String> data) {
super(R.layout.item_edit_website_list, data);
}
@Override
protected void convert(@NonNull BaseViewHolder helper, String item) {
EditText edtWebsite = helper.getView(R.id.edt_website);
edtWebsite.setText(Utils.StringFormat(item));
if (item.length() > 0) {
edtWebsite.setSelection(item.length());
}
helper.addOnClickListener(R.id.iv_delete);
editSetOnFocusChangeListener(edtWebsite, helper.getLayoutPosition());
edtWebsite.setOnTouchListener(onTouchListener);
}
private void editSetOnFocusChangeListener(EditText edt, int position) {
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
LogUtil.d("onTextChanged位置:" + position);
// edt.setText(s);
// edt.setSelection(s.length());
}
@Override
public void afterTextChanged(Editable s) {
LogUtil.d("位置" + position);
if (s.length() > 0) {
getData().set(position, s.toString());
} else {
getData().set(position, "");
}
}
};
edt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
edt.addTextChangedListener(textWatcher);
} else {
edt.removeTextChangedListener(textWatcher);
}
}
});
}
private View.OnTouchListener onTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction()) {
v.getParent().requestDisallowInterceptTouchEvent(true);
} else if (MotionEvent.ACTION_UP == event.getAction()) {
v.getParent().requestDisallowInterceptTouchEvent(false);
}
return false;
}
};
}