2016-08-12 3 views
0

Я пытаюсь реализовать экран регистрации, где у меня есть два ediTexts внутри двух TextInputLayouts (один для электронной почты и один для пароля). Однако для электронной почты я хочу иметь постоянный текст для домена. Есть ли способ, чтобы текст оставался в конце 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 My bad! Я неправильно прочитал ваш вопрос, и через некоторое время я обновлю свой ответ. – 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 символов. Не связано с visibilty – riadrifai

Смежные вопросы