android setError()问题 - 没有按预期工作

时间:2015-11-30 12:33:48

标签: android android-edittext

我正在使用edittext.setError(char...)方法显示编辑文本的错误(如果它是空白的)。 但现在面临两个问题,我无法解决。

1)当显示错误“字段不能为空”时带有红色图标和弹出窗口。但是当通过单击任何其他编辑文本打开键盘时,错误弹出窗口不会随着编辑文本字段移动,并且图标和错误消息都会显示在两个不同的位置。

2)我的EditText字段右下角有显示和隐藏按钮。设置setError(char...)后,在展示/隐藏之间切换不会发生。以下是切换显示/隐藏的代码段。

public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        if(event.getAction() == MotionEvent.ACTION_UP && mDrawableRight!=null){
          mRectBounds = mDrawableRight.getBounds();
          final int x = (int)event.getX();
          final int y = (int)event.getY();
          if(x>=(this.getRight()-mRectBounds.width()) && x<=(this.getRight()-this.getPaddingRight())&& y>=this.getPaddingTop() && y<=(this.getHeight()-this.getPaddingBottom())){
            if(this.getInputType() == InputType.TYPE_TEXT_VARIATION_PASSWORD){
                this.setTransformationMethod(null);
                this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                this.setCompoundDrawablesWithIntrinsicBounds(null, null, this.getResources().getDrawable(R.drawable.show), null);
              } else {
              this.setTransformationMethod(PasswordTransformationMethod.getInstance());
              this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
              this.setCompoundDrawablesWithIntrinsicBounds(null, null, this.getResources().getDrawable(R.drawable.hide), null);
            } 
            event.setAction(MotionEvent.ACTION_CANCEL);
          }
        } 
        return super.onTouchEvent(event);
    }

0 个答案:

没有答案