我有一个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()"答案 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);