繁体   English   中英

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

[英]Hide virtual keyboard on EditText focus lost

我知道这个问题已经被问过百万遍了,但是我无法为我的特定问题找到直接的解决方案。

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

将此添加到您的布局文件。

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

现在添加TouchListener这个imageView在您的活动。

尝试这个

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

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        If(!hasfocus)
          hideSoftKeyboard()
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM