0

この質問が何百万回も尋ねられていることは知っていますが、特定の問題に対する直接的な解決策を見つけることができません.

私の 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;
    }
}
4

2 に答える 2

3

これをレイアウトファイルに追加します。

 <ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#80000000"
    />

TouchListener次に、これimageViewをアクティビティに追加します。

于 2012-07-26T09:37:44.273 に答える
0

これを試して

<Your EditView>.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        If(!hasfocus)
          hideSoftKeyboard()
    }
});
于 2012-07-27T02:04:48.887 に答える