Dan*_*nie 4 java android kotlin
我的屏幕上有一个 AutocompleteTextView。默认情况下,当用户单击 autocompletetextviews 下拉项中的项时,它会将这个 autocompletetextview 的文本设置为这个选定项的值。
有什么办法可以禁用它吗?那么当用户点击下拉项目时,只会onItemClickListener触发?
将值设置为 "" inonItemClickListener不是一个选项。
autoCompleteTextView.setOnItemClickListener { adapterView, view, i, l ->
autoCompleteTextView.setText("")
}
Run Code Online (Sandbox Code Playgroud)
因为我需要我TextWatcher的不被触发
AutoCompleteTextView 使用此类来检测其下拉列表中的点击:
private class DropDownItemClickListener implements AdapterView.OnItemClickListener {
public void onItemClick(AdapterView parent, View v, int position, long id) {
performCompletion(v, position, id);
}
}
Run Code Online (Sandbox Code Playgroud)
在该performCompletion()方法中,有一个实际更改 TextView 内容的调用:
replaceText(convertSelectionToString(selectedItem));
Run Code Online (Sandbox Code Playgroud)
这个replaceText()方法是protected,这意味着你可以创建一个 的子类AutoCompleteTextView并覆盖它什么都不做:
public class MyAutoCompleteTextView extends AppCompatAutoCompleteTextView {
public MyAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void replaceText(CharSequence text) {
// do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
现在只需用<AutoCompleteTextView>标签替换你的标签,<com.example.yourprojecthere.MyAutoCompleteTextView>你就应该准备好了。