2013-10-06 72 views
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()”

回答

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(""); 
      } 
     }); 
0

代替其中:

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

尝试:

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

我忘了提及我在片段中使用它,所以调用“this”不适用:( –

相关问题