EditText会自动激活

时间:2011-12-30 10:42:06

标签: android focus android-edittext

如果我在启动应用程序时按任何字母/数字,EditText会自动激活并开始搜索相应的字符串。

例如,在应用启动时,如果用户错误地按下字母“A”,EditText会获取该字母并显示从“A”开始的所有结果。

实际上它应该被激活,并且应该显示相应的结果当且仅当用户点击EditText时,才会显示

我在main.xml

中尝试过此操作
    android:focusable="false"
    android:clickable="true"

并在activity class

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);      
            lsym = (ListView) findViewById(R.id.lsym);
        edsearch = (EditText) findViewById(R.id.edsearch);

            dbM = new DbManager(this);
            symbolarr = dbM.getSymbol();
            edsearch.setOnClickListener(new Button.OnClickListener() {
                @Override
                public void onClick(View v) {

                     edsearch.setFocusable(true);
                    edsearch.requestFocus();
                }
            });

            edsearch.addTextChangedListener(new TextWatcher() {

                @Override
                public void onTextChanged(CharSequence s, int start,
                        int before, int count) {

                    //FILTERING LIST
                }
            });
}

,但它会将焦点永远地从EditText移开,即使点击它也不会再次获得焦点。

我做错了什么?

任何帮助都将有益于生命!

3 个答案:

答案 0 :(得分:0)

您应该使用以下属性进行父布局

android:focusable="true"
android:focusableInTouchMode="true"

答案 1 :(得分:0)

您的main.xml文件包含

<requestFocus/>

标签或在编程代码中启用它 你可以用

  

requestFocus()方法

答案 2 :(得分:0)

当我第一次说明开发时,我的一个应用程序中出现了这个问题。现在我不明白你问题的本质,但这对我有用。

这是一个修复,我可能会添加并且只是阻止软键盘在活动启动时出现。这将防止活动启动后意外的键输入。

将此添加到活动的相关java代码中。

private void hideKeyboard() {
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    }