首次触摸时不会显示虚拟键盘

时间:2013-10-06 11:14:05

标签: android

我有一个EditText,我希望在它聚焦时改变文字样式,并且它的内容等于默认内容。以下是代码段:

input.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            if (input.getText().toString().equals(defaultText)) {
                input.setTextAppearance(getActivity(), R.style.contact_us_info_header);
                input.setText("");
            }
        }
    }
});

问题是,当我第一次触摸EditText时,虚拟键盘不显示(文本光标确实出现在EditText内),但它显示键盘当我再次触摸它时。如果我删除此行:

input.setTextAppearance(getActivity(), R.style.contact_us_info_header);

然后当我触摸EditText时键盘第一次出现。 无论如何在没有删除上面代码的情况下首先触摸键盘显示?

任何帮助都会受到赞赏。

P / S:我在片段中使用它,这就是为什么我需要调用" getActivity()"

2 个答案:

答案 0 :(得分:2)

试一试

input.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                   v.performClick();
                    }
                }
            }
        });

input.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 if (input.getText().toString().equals(defaultText)) {
                        input.setTextAppearance(getActivity(), R.style.contact_us_info_header);
                        input.setText("");
            }
        });

答案 1 :(得分:0)

而不是:

input.setTextAppearance(getActivity(), R.style.contact_us_info_header);

尝试:

input.setTextAppearance(this, R.style.contact_us_info_header);