2015-09-07 50 views
3

1)使2编辑文本字段靠近屏幕的底部,也是一个提交按钮(上提交有一个叫做第一场SETERROR)setError popup在按下软键盘后不能正确重新定位?

2)运行应用程序,在两个字段中输入一些文字,点击提交

3)您应该在正确的位置看到错误弹出窗口(如预期的那样),点击进入第二个文本框,然后再次点击返回到第一个文本框,错误弹出框是关闭的(它不是正确对齐或箭头向错误方向翻转)。在这种情况下软键盘处于启动状态时,您也可以回到关闭软键盘,但错误弹出窗口仍处于非定位状态。

enter image description here

enter image description here

回答

1
  1. 这个类添加到您的源文件夹。

    公共类ListenerEditText扩展的EditText {

    private KeyImeChange keyImeChangeListener; 
    
    public ListenerEditText(Context context, AttributeSet attrs) { 
        super(context, attrs); 
    } 
    
    public void setKeyImeChangeListener(KeyImeChange listener){ 
        keyImeChangeListener = listener; 
    } 
    
    public interface KeyImeChange { 
        public void onKeyIme(int keyCode, KeyEvent event); 
    } 
    
    @Override 
    public boolean onKeyPreIme (int keyCode, KeyEvent event){ 
        if(keyImeChangeListener != null){ 
         keyImeChangeListener.onKeyIme(keyCode, event); 
        }   
        return false; 
    } 
    

    }

  2. 在XML文件中。

<com.src.ListenerEditText 
 
            android:id="@+id/password" 
 
            style="@style/EditBoxStyle" 
 
            android:ems="30" 
 
            android:hint="*API Key" 
 
            android:inputType="text|textNoSuggestions" 
 
            android:maxLength="250" 
 
            android:singleLine="true" 
 
           </com.src.ListenerEditText>

  • 添加行动的EditText。
  • password.setKeyImeChangeListener(new KeyImeChange() { 
     
        
     
        \t \t @Override 
     
        \t \t public void onKeyIme(int keyCode, KeyEvent event) { 
     
        
     
        \t \t \t if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 
     
         
     
        \t \t \t \t \t password.clearFocus(); 
     
        
     
        \t \t \t } 
     
        
     
        \t \t } 
     
        \t });