Comment définir le focus sur le droit du texte dans EditText pour Android?

Dans ma demande lorsque les utilisateurs cliquent ou touchent la vue Edit Text, la mise au point est parfois définie au début. Par exemple, si le texte existant est "Salut". Les utilisateurs veulent cliquer dessus et le changer en "H1 Comment êtes-vous?" En ajoutant le texte «Comment allez-vous?». Mais comme l'accent est mis au début, il devient "Comment allez-vous? Bonjour". Donc, je souhaite toujours mettre l'accent sur la droite de la plupart du texte lors de la sélection. Comment puis-je faire cela. Veuillez me le faire savoir avec un échantillon si possible. Merci pour votre temps et votre aide.

  • Eclipse affiche une erreur mais ne donne pas d'erreur dans la console
  • Google android maps api v2 Afficher le titre du marqueur Toujours
  • Android, puis-je utiliser putExtra pour passer plusieurs valeurs
  • Android ExpandableListView ne s'élargit pas / ne peut pas être cliqué
  • Pourquoi pas de méthode Service.onStop?
  • La dernière bibliothèque de support v4 nécessite minSdk (API 20, L Aperçu)?
  • Remplacer View.onSaveInstanceState () et View.onRestoreInstanceState () à l'aide de View.BaseSavedState?
  • Dans Android, comment réparer en douceur le fond d'une couleur à l'autre? (Comment utiliser les threads)
  • Existe-t-il un tutoriel d'animation Android utile pour les débutants?
  • Android comment ajouter swipe Gesture sur LinearLayout sans onDown true
  • Comment convertir SpannedString en Spannable
  • Pourquoi la fonction MediaRecorder ne provoque-t-elle pas une erreur ANR?
  • 7 Solutions collect form web for “Comment définir le focus sur le droit du texte dans EditText pour Android?”

    Vous pouvez spécifiquement mettre le caret à la dernière position dans le texte:

    EditText editText = (EditText) findViewById(R.id.textId); int pos = editText.getText().length(); editText.setSelection(pos); 

    Quelque chose de plus spécifique à ce sujet, vous pouvez utiliser le code suivant:

     EditText editText = (EditText) findViewById(R.id.textId); editText.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus){ editText.setSelection(editText.getText().length()); } } }); 

    La méthode setOnFocusChangeLister () est utilisée pour détecter lorsque l'éditionText reçoit la mise au point.

    La solution ci-dessus ne fonctionne pas.

    Ici, je vous donne une nouvelle solution pour mettre l'accent sur le droit du texte dans edittext pour Android. Et ça fonctionne bien.

    Mon code est:

      EditText edt_ans = (EditText)findViewById(R.id.edt_answer); edt_ans.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub edt_ans.setSelection(edt_ans.getText().length()); } @Override public void beforeTextChanged(CharSequence s, int start, int count,int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); 

    Happy Coding …. 🙂

    Une façon plus proéminente serait où vous n'avez pas besoin de prendre soin de définir la sélection manuellement tout le temps. Utilisez donc CustomEditText au lieu de EditText dans votre mise en page.

     public class CustomEditText extends EditText { public CustomEditText(Context context, AttributeSet attrs) { super(context, attrs); } /** * This is a Fix of buggy behavior of android, where after setting text using setText(...), selection remain on * first character and not at last character. */ @Override public void setText(CharSequence text, BufferType type) { super.setText(text, type); if (text != null && ! (text.toString().trim().length() == 0 )) { final int textLength = text.length(); if (getSelectionEnd() != textLength) { setSelection(textLength); } } } } 

    SetSelection ne fonctionnait pas pour moi, mais cela fonctionne comme un charme. Fonctionne également avec afterTextChanged.

      @Override public void onTextChanged(CharSequence s, int start, int before, int count) { edittext.requestFocus(edittext.getText().length()); } 

    Sur la nouvelle option, vous pouvez utiliser quelque chose comme ceci:

      //buttons setups private void buttonsSetupForRecommendations() { button2.setNextFocusRightId(R.id.ok_button); button2.setNextFocusLeftId(R.id.ok_button); button2.setNextFocusDownId(R.id.cancel_button); button2.setNextFocusUpId(R.id.cancel_button); button.setVisibility(View.GONE); button2.setText(R.string.cancel_text); button1.setText(R.string.clear_text); button1.setNextFocusRightId(R.id.cancel_button); button1.setNextFocusLeftId(R.id.cancel_button); button1.setNextFocusUpId(R.id.ok_button); button1.setNextFocusDownId(R.id.ok_button); button1.requestFocus(); } 

    Cela fonctionne avec un bouton et d'autres éléments. U peut ajouter ceci sur le code java ^^ ou xml

      public void ontextchangelistner(){ if(s.toString().startsWith("0")) { if (s.length() == 2) { if (s.toString().contains("00")) { editText.setText(s.toString().substring(1)); int pos = editText.getText().length(); editText.setSelection(pos); } } } 

    Si vous entrez la première fois zéro dans le texte d'édition, il s'affiche; Mais en secondes pressions sur zéro, ce zéro n'est pas représenté. J'espère que cela vous aidera.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.