也許是晚了,但我發現這個問題優雅的解決方案:
前
禁用過濾設置文本後啓用它(而不是玩焦點或/和延遲)。在這種情況下,您應該使用自定義控件。
見下面的例子:
public class CustomCompliteTextView extends AutoCompleteTextView {
private boolean mIsSearchEnabled = true;
public CustomCompliteTextView(Context context) {
super(context);
}
public CustomCompliteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomCompliteTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setSearchEnabled(boolean isEnabled) {
mIsSearchEnabled = isEnabled;
}
@Override
protected void performFiltering(CharSequence text, int keyCode) {
if (mIsSearchEnabled) {
super.performFiltering(text, keyCode);
}
}
}
與用法:
text.setSearchEnabled(false);
text.setText("Text you want to set");
// optional, if you also want to set correct selection
text.setSelection(text.getText().length());
text.setSearchEnabled(true);
這對我有效;我不需要設置程序化延遲。 – squeeish 2015-09-04 02:46:11