显示AutocompleteTextView中的所有项目而不写入文本
我有一个AutocompleteTextView,它工作正常。当我写一个单词时,它会显示相关的结果,但是我想显示所有项目而不用在AutocompleteTextView中编写任何单词。我怎样才能做到这一点。显示AutocompleteTextView中的所有项目而不写入文本
您需要延长AutoCompleteTextView,
“当阈值小于或等于0,1的阈值是 施用。”。
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.AutoCompleteTextView;
public class InstantAutoComplete extends AutoCompleteTextView {
public InstantAutoComplete(Context context) {
super(context);
}
public InstantAutoComplete(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
}
public InstantAutoComplete(Context arg0, AttributeSet arg1, int arg2) {
super(arg0, arg1, arg2);
}
@Override
public boolean enoughToFilter() {
return true;
}
@Override
protected void onFocusChanged(boolean focused, int direction,
Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
if (focused) {
performFiltering(getText(), 0);
}
}
}
在XML
<AutoCompleteTextView ... /> to <your.namespace.InstantAutoComplete ... />
编辑1
创建一个名为InstantAutoComplete然后把这个代码到类新类。
在你的布局XML使用这个类像
然后找到你的actity此窗口小部件(onCreate方法)。
但问题是我已经在该类中扩展了Activity,并且它是必需的。因此无法像解决方案一样扩展AutoCompleteTextView。有什么办法吗? – androidcodehunter 2013-03-21 10:40:06
你不需要扩展你的活动,它是新的自定义自动完成textview,只需创建它并在你的布局中使用。请看编辑答案 – Talha 2013-03-21 10:46:04
https://dl.dropbox.com/u/68130108/AutoComplateTextView。请看这个例子 – Talha 2013-03-21 10:53:47
更好的解决方案HERE
你并不需要自定义AutoCompleteTextView
。相反,只需拨打autoCompleteTextView.showDropDown()
当你需要它.....欢呼:)
不幸的是,这并不总是奏效。我不确定为什么,但在某些设备上,当文本字段为空时,似乎忽略该命令。 – 2014-04-29 18:01:34
您为它设置了任何阈值吗? – 2014-04-30 09:40:01
是的,0我甚至事先调用requestFocus – 2014-04-30 12:40:20
它为我工作:
添加到您的对象下一个事件的方法:
myView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
myView.showDropDown();
}
});
myView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
myView.showDropDown();
return false;
}
});
我不认为你需要两个。不触及视图也会让它重点关注? – velocirabbit 2015-10-07 20:30:29
你是对的,我认为OnTouchListener更好 – 2017-12-04 19:55:49
你需要调用requestFocus的( );显示键盘,否则键盘不会弹出。
方法强制显示下拉列表。
autocomptv.setOnTouchListener(new OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View paramView, MotionEvent paramMotionEvent) {
// TODO Auto-generated method stub
autocomptv.showDropDown();
autocomptv.requestFocus();
return false;
}
});
使用本:
text.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
text.showDropDown();
return false;
}
});
这对我的作品完美,这是解决问题的一个简单的方法:
final ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_dropdown_item_1line, usernameLists);
etUsername.setThreshold(1);
etUsername.setAdapter(adapter);
etUsername.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View paramView, MotionEvent paramMotionEvent) {
if (usernameLists.size() > 0) {
// show all suggestions
if (!etUsername.getText().toString().equals(""))
adapter.getFilter().filter(null);
etUsername.showDropDown();
}
return false;
}
});
尝试此链接代码可以帮助你... 。 http://stackoverflow.com/questions/15224027/custom-autocompletevview-li ke-facebook-comment-field-in-android/15247212#15247212 – 2013-03-21 10:33:17
这不是我想要的实际解决方案。不管怎样,谢谢。 – androidcodehunter 2013-03-21 10:41:21