2016-08-12 51 views
0

我试图实现一个注册屏幕,在两个TextInputLayouts(一个用于电子邮件,一个用于密码)内有两个ediTexts。但是,对于电子邮件,我想为该域拥有一个常量文本。有什么方法可以将文本保留在editText末尾或其他更好的建议?这里的电子邮件是提示,我希望用户只能在开始时输入,而@ example.com保持不变。如何在editText android的末尾添加一个常量不可编辑的文本?

enter image description here

回答

0

所以这里的更新的解决方案。

emailEditText.setText("@gmail.com"); 
    emailEditText.setSelection(0); 
    emailEditText.requestFocus(); 
    emailEditText.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) 
     { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_MOVE: 

        Layout layout = ((EditText) v).getLayout(); 
        float x = event.getX() + emailEditText.getScrollX(); 
        offset = layout.getOffsetForHorizontal(0, x); 
        maxOffset = emailEditText.getText().toString().indexOf("@"); 

        break; 

       case MotionEvent.ACTION_UP: 

        if(offset > maxOffset && maxOffset >= 0) { 

         emailEditText.setSelection(maxOffset); 
        } 
        else if (offset >= 0) { 
         emailEditText.setSelection(offset); 
        } 

        event.setAction(MotionEvent.ACTION_CANCEL); 

        showSoftKeyBoard(emailEditText); 
      } 
      return false; 
     } 
    }); 

    public void showSoftKeyBoard(View focusedView) { 
    if(getCurrentFocus() != null) { 
     ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)) 
       .showSoftInput(focusedView, InputMethodManager.SHOW_IMPLICIT); 
    } 
} 

最后一个免责声明...你可以在光标周围移动,但是没有通常在光标底部看到的持有者。

+0

我已经研究过了,但是我还没有能够保留文本在最后。 – riadrifai

+0

@riadrifai我的坏!我误解了你的问题,我会在一段时间内更新我的答案。 – Abbas

+0

好的,谢谢 – riadrifai

1

您可以尝试下列操作之一:

1)在水平的LinearLayout,把你的textInputLayout(宽度= WRAP_CONTENT)和包含域名的textView(width = 0dp & weight = 1)。每当电子邮件编辑文本获得焦点时,显示文本视图或隐藏它。

2)向edittext和onAfterTextChanged方法添加一个文本观察器将域名添加到字符串。在这里,您必须检查edittext的字符串是否以域名结尾或不...然后只添加域名,否则不添加它。就个人而言,这不是一个优雅的解决方案,因为在文本更改之后,游标不会处于预期的位置。

谢谢

+0

好的,谢谢,我会很快尝试你的第一个建议。至于第二个,我将ditText中的字符数量限制为域之前的电子邮件字符数,因为我已经知道(在我的情况中为5),您认为这会使它更容易使用textWatcher吗? – riadrifai

+0

那么,如果您将editText中的字符数限制设置为5.那么您是否认为您的域名将在其中显示? – manojs001

+0

限制在用户插入的文本上,即我只允许他输入5个字符。与可见性无关 – riadrifai

相关问题