Tự động hoàn thành Android chỉ bắt đầu sau hai chữ cái. Làm thế nào tôi có thể làm cho nó để danh sách xuất hiện khi lĩnh vực này chỉ được chọn?Hiển thị tự động hoàn tất ngay trên Android
Trả lời
Mở rộng AutoCompleteTextView, trọng các enoughToFilter() phương pháp và các phương pháp ngưỡng để nó không thay thế ngưỡng 0 với 1 ngưỡng:
public class MyAutoCompleteTextView extends AutoCompleteTextView {
private int myThreshold;
public MyAutoCompleteTextView(Context context) {
super(context);
}
public MyAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setThreshold(int threshold) {
if (threshold < 0) {
threshold = 0;
}
myThreshold = threshold;
}
@Override
public boolean enoughToFilter() {
return getText().length() >= myThreshold;
}
@Override
public int getThreshold() {
return myThreshold;
}
}
Pad bộ đổi nguồn của bạn bằng một/hai ký tự trắng ở bên trái tùy thuộc vào cài đặt ngưỡng.
Có một cái nhìn để setThreshold phương pháp:
public void setThreshold (int ngưỡng)
Từ: API Level 1
Chỉ định số lượng tối thiểu của ký tự người dùng phải gõ trong hộp chỉnh sửa trước khi danh sách thả xuống được hiển thị .
Khi ngưỡng nhỏ hơn hoặc bằng 0, ngưỡng 1 được áp dụng.
Có cách nào để thực hiện cho nó 0 không? – Mitchell
Khi ngưỡng nhỏ hơn hoặc bằng 0, ngưỡng 1 được áp dụng. – systempuntoout
Vì vậy, không có cách nào để làm cho nó để chỉ lựa chọn tiết lộ tất cả các tùy chọn? – Mitchell
Để có được autocomplete để hiển thị trên tập trung thêm trình nghe tập trung và hiển thị menu thả xuống khi trường được lấy nét, như sau:
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(hasFocus){
editText.showDropDown();
}
}
});
Hoặc chỉ cần gọi editText.showDropDown() nếu bạn không cần phần lấy nét.
Điều này phù hợp nhất với tôi. Tôi muốn nó hiển thị khi người dùng nhấp vào nó để thay vì Focus tôi sử dụng onClick. –
đơn giản súc tích và ... tốt nhất! –
phương pháp thay thế của việc thay đổi các thiết lập trong XML của bạn: Như đã đề cập bởi những người khác bạn cần phải thiết lập của bạn 'Auto Completion Threshold' tới 1
khác so với những gì @systempuntoout đề cập.
Bạn cũng có thể làm điều đó trong tập tin XML của bạn như
<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edittext_id"
android:inputType="textAutoComplete"
android:completionThreshold="1"
/>
Lưu ý dòng: android: completionThreshold = "1"
Đối với những người muốn thay đổi ngưỡng sử dụng SearchView bạn có để sử dụng:
SearchView.SearchAutoComplete complete = (SearchView.SearchAutoComplete)search.findViewById(R.id.search_src_text);
complete.setThreshold(0);
Thao tác này sẽ không hiển thị menu thả xuống cùng một lúc, bạn vẫn sẽ cần phải bắt đầu nhập. – Heinrisch