EditText窃取焦点

时间:2012-02-05 06:30:59

标签: android listview

我有一个Activity,它有一个EditText和一个ListView。 EditText可用于过滤listview行。

问题是当Activity加载时,键盘默认弹出。我希望键盘只有在用户实际按下文本框而不是默认情况下才会出现。

Public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.filterablelayout);

    filterText = (EditText) findViewById(R.id.search_box);
    filterText.addTextChangedListener(filterTextWatcher);

    filterText.setVisibility(View.INVISIBLE);

    GetCategories();
}

我的布局xml如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/selectcat" />

<EditText
    android:id="@+id/search_box"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/categorytxthint"
    android:inputType="text"
    android:maxLines="1" />

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1" />

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

我自己遇到过这个问题,真的很烦人。您需要告诉系统隐藏软键盘。 Android文档说这是“用于hideSoftInputFromWindow(IBinder,int)的标志”,表示只有在用户没有明确显示软输入窗口时才应该隐藏它。“

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);

答案 1 :(得分:0)

在清单中,为您的活动添加以下内容:

android:windowSoftInputMode="stateHidden"