2016-08-12 25 views
0

私は2つのTextInputLayouts(電子メール用とパスワード用)の内に2つの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)。電子メールedittextがフォーカスを受け取るたびに、textviewを表示し、それ以外の場合は非表示にします。

2)edittextにテキストウォッチャーを追加し、onAfterTextChangedメソッドで文字列にドメイン名を追加します。ここでは、edittextの文字列がドメイン名で終わるかどうかをチェックする必要があります。そうでなければ、ドメイン名を追加するだけです。それ以外の場合は追加しないでください。個人的には、これは優雅な解決策ではありません。なぜなら、テキストが変更された後はカーソルが予想された位置にないからです。

おかげ

+0

大丈夫感謝私はすぐにあなたの最初の提案を試みます。 2番目は、ditTextの文字数をドメインの前の電子メールの文字数に制限しています。これは私が既に知っているので(私の場合は5)、textWatcherを使いやすくすると思いますか? – riadrifai

+0

まあ、editTextの文字数の制限を5に設定した場合、ドメイン名が表示されると思いますか? – manojs001

+0

制限はユーザーからの挿入テキストに基づいています。つまり、ユーザーには5文字しか入力できません。 visibiltyに関連していない – riadrifai

関連する問題