在EditText上隐藏虚拟键盘焦点丢失

时间:2012-07-26 08:01:10

标签: java android

我知道这个问题已被问过百万次,但我找不到针对我的具体问题的直接解决方案。

在我的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;
    }
}

2 个答案:

答案 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()
    }
});