我知道这个问题已被问过百万次,但我找不到针对我的具体问题的直接解决方案。
在我的SearchActivity中,有一个EditText
& ListView
。
我想即使用户触摸除EditText之外的任何地方,键盘也应该关闭。
我所做的是在ListView&上设置TouchListener
。无论何时触摸,键盘都会关闭。
但它创造了一个问题,当我触摸ListView的任何元素时,键盘会隐藏,但列表的元素变得不可见。
请建议比这更好的方法。
我的代码:
public class SearchActivity extends Activity implements OnTouchListener {
RelativeLayout rlSearchLayout;
EditText etSearchBar;
ListView lvSearchResult;
private static String searchText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
setTitle("SearchActivity.java");
etSearchBar = (EditText) findViewById(R.id.etSearchBar);
lvSearchResult = (ListView) findViewById(R.id.lvSearchResult);
searchText = etSearchBar.getText().toString();
lvSearchResult.setOnTouchListener(this);
String[] objects = { "One", "two" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, objects);
lvSearchResult.setAdapter(adapter);
}
@Override
public boolean onTouch(View paramView, MotionEvent paramMotionEvent) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etSearchBar.getWindowToken(), 0);
return false;
}
}
答案 0 :(得分:3)
将其添加到您的布局文件中。
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#80000000"
/>
现在在您的活动中为此TouchListener
添加imageView
。
答案 1 :(得分:0)
试试这个
<Your EditView>.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
If(!hasfocus)
hideSoftKeyboard()
}
});