0

我有一个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()”

4

2 回答 2

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("");
            }
        });
于 2013-10-06T11:20:55.267 回答
0

而不是这个:

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

尝试:

input.setTextAppearance(this, R.style.contact_us_info_header);
于 2013-10-06T11:22:03.560 回答