ListView(AsynTaskからロード)とEditText(そのリストをフィルタリングできるようにする)で構成されるLinearLayoutがあります。コードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Filtrar por nombre..." >
</EditText>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
問題は、アクティビティが開始されるとキーボードが表示され、EditTextが検索のためにクリックされたときにのみ表示したいということです。
マニフェストに次のように書くなど、いくつかの方法を試しました
android:windowSoftInputMode="stateHidden"
これをクラスに含める
InputMethodManager iMM = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
iMM.hideSoftInputFromWindow(editText.getWindowToken(), 0);
私が達成した唯一のことは、キーボードを表示せず、リストのロードされたもの(EditTextと画面の残りの部分だけを真っ黒)を表示しないことです。EditTextをクリックすると、キーボードとlistViewのもの。
これに対する可能な解決策はありますか?
編集:
私は次の解決策を試しました(@ Sush、@ boztalay、@ Agata Sworowskaに感謝します)が、どれもうまくいきませんでした。
-私のレイアウトに配置:
android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
-そして私のonCreate()メソッドに配置されます:
ListView listView = findViewById(R.id.list);
listView.setFocusableInTouchMode(true);
listView.requestFocus();
他の可能性はありますか?
新しい編集:
EditTextにフォーカスされていない場合、それを待っていた場合と同様に、EditTextにフォーカスを戻すまでlistViewがロードされないことに気づきました。ListViewをロードするコードの後にEditTextを設定しようとしましたが、問題は解決しません。