在我的应用程序中,我有一个带有列表视图和搜索栏的视图,可以在列表视图中进行搜索。当您点击搜索栏时,它会获得焦点并且软键盘会亮起。当我触摸列表视图时键盘保持在列表视图的顶部,因此我看不到很多我的列表视图。
我的问题: 如何知道列表视图是否已被触摸/滚动/ ...如何删除软键盘并从编辑文本中删除焦点?
答案 0 :(得分:17)
基于@androidnoob回答,我在这里(对于其他有此特定问题的人)发布所需的完整代码。
list.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
//hide KB
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(colleagueSearch.getWindowToken(), 0);
}
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { }
});
答案 1 :(得分:3)
Take a look at this question了解如何关闭键盘,以及知道列表视图是否已滚动,您可以扩展listview类并覆盖onScrollChanged()方法并在滚动时执行任何操作与
互动编辑:实际上有OnScrollListener来监听列表视图中的滚动更改
答案 2 :(得分:1)
yourListView.setOnScrollListener(new AbsListView.OnScrollListener(){
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState != 0){
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
答案 3 :(得分:0)
@Luiji博士的答案有效,但我认为最好是在用户触摸listView后立即隐藏软键。
myListView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(((Activity) mContext).getCurrentFocus().getWindowToken(), 0);
}
}
});