この質問が何百万回も尋ねられていることは知っていますが、特定の問題に対する直接的な解決策を見つけることができません.
私の SearchActivity には、EditText
& がありListView
ます。
ユーザーが EditText 以外の場所に触れても、キーボードは閉じる必要があります。
私がやったのはTouchListener
、ListViewでセットアップすることです。タッチすると、キーボードが閉じられます。
しかし、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;
}
}