duplication possible: Android-singleline-true-not-working-for-edittext
<EditText
Android:id="@+id/searchbox"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:lines="1"
Android:scrollHorizontally="true"
Android:ellipsize="end"
Android:layout_weight="1"
Android:layout_marginTop="2dp"
Android:drawablePadding="10dp"
Android:background="@drawable/edittext"
Android:drawableLeft="@drawable/folder_full"
Android:drawableRight="@drawable/search"
Android:paddingLeft="15dp"
Android:hint="search...">
</EditText>
Je souhaite que la variable EditText
ci-dessus ne comporte qu'une seule ligne. Même si l'utilisateur appuie sur "enter", le curseur ne doit pas descendre à la deuxième ligne. Quelqu'un peut-il m'aider à le faire?
Utilisez Android:maxLines="1"
et Android:inputType="text"
Vous avez oublié le Android: maxLines attribut. Et référez-vous à Android: inputType Avec votre exemple, ci-dessous donnera ce résultat:
<EditText
Android:id="@+id/searchbox"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:inputType="text"
Android:scrollHorizontally="true"
Android:ellipsize="end"
Android:layout_weight="1"
Android:layout_marginTop="2dp"
Android:drawablePadding="10dp"
Android:background="@drawable/edittext"
Android:drawableLeft="@drawable/folder_full"
Android:drawableRight="@drawable/search"
Android:paddingLeft="15dp"
Android:hint="search...">
</EditText>
Utiliser Android:singleLine="true"
est obsolète.
Il suffit d’ajouter votre type d’entrée et de définir maxline sur 1 pour que tout fonctionne correctement.
Android:inputType="text"
Android:maxLines="1"
Android:singleLine
est maintenant obsolète. De la documentation :
Cette constante est déconseillée dans l'API de niveau 3.
Cet attribut est obsolète. Utilisez plutôt
maxLines
pour modifier la disposition d'un texte statique et utilisez l'indicateurtextMultiLine
dans l'attribut inputType à la place pour les vues de texte modifiable (si singleLine et inputType sont fournis, les indicateurs inputType remplacent la valeur de singleLine).
Donc, vous pouvez simplement définir Android:inputType="textEmailSubject"
ou toute autre valeur qui correspond au contenu du champ.
Vous devez ajouter cette ligne dans votre EditText au format xml:
Android:maxLines="1"
Android:maxLines="1"
Android:inputType="text"
Ajoutez le code ci-dessus pour avoir une seule ligne dans la balise EditText de votre mise en page.
Android:singleLine="true" is deprecated
Cette constante était obsolète in API niveau 3 .
Cet attribut est obsolète. Utilisez maxLines à la place pour changer le mise en page d'un texte statique et utilisez l'indicateur textMultiLine dans le fichier attribut inputType à la place pour les vues de texte modifiables (si singleLine et inputType sont fournis, les indicateurs inputType remplaceront la valeur de singleLine).
Maintenant, l'attribut Android:singleLine
est obsolète. Veuillez ajouter ces attributs à votre EditText
pour que EditText
soit une ligne.
Android:inputType="text"
Android:imeOptions="actionNext"
Android:maxLines="1"
J'ai déjà fait cela avec Android:singleLine="true"
puis en ajoutant un écouteur pour la touche "Entrée":
((EditText)this.findViewById(R.id.mytext)).setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
//if the enter key was pressed, then hide the keyboard and do whatever needs doing.
InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);
//do what you need on your enter key press here
return true;
}
return false;
}
});
Cela fonctionnera pour le EditText:
Android:inputType="text"
Ensuite, je définirais une longueur maximale pour le texte d'entrée:
Android:maxLines="1"
Ce sont les 2 qui sont nécessaires maintenant.
Inclure Android:singleLine="true"
Tout le monde montre la manière XML, sauf qu'une personne a montré l'appel de la méthode setMaxLines de EditText. Cependant, quand j'ai fait ça, ça n'a pas marché. Une chose qui a fonctionné pour moi a été la définition du type d'entrée.
EditText editText = new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT);
Ceci autorise les caractères spéciaux (A-Z, a-z, 0-9) et spéciaux, mais ne permet pas d'appuyer sur enter. Lorsque vous appuyez sur Entrée, le composant suivant de l'interface graphique est affiché, le cas échéant dans votre application.
Vous pouvez aussi vouloir définir le nombre maximum de caractères pouvant être placés dans cet EditText, ou bien il va pousser tout ce qui se trouve à sa droite de l'écran, ou tout simplement commencer à se terminer à l'écran. Vous pouvez faire ceci comme ceci:
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(8);
editText.setFilters(filters);
Cela définit le nombre maximal de caractères sur 8 dans cet EditText. J'espère que tout cela vous aide.
s'il vous plaît essayez ce code
Android:inputType="textPersonName"
Par programme:
textView.setMaxLines(1);
utilisation
Android:ellipsize="end"
Android:maxLines="1"
Afin de limiter, il vous suffit de définir l'option "une seule ligne" sur "true".
Android:singleLine="true"
De plus, il est important de faire attention si la propriété Android: inputType est textMultiLine . Si c'est le cas, les propriétés Android: singleLine, Android: imeOptions, Android: ellipsize et Android maxLines seront ignorées et votre EditText acceptera quand même MultiLines.
Le @Aleks G OnKeyListener () fonctionne vraiment bien, mais je l'ai exécuté depuis MainActivity et j'ai donc dû le modifier légèrement:
EditText searchBox = (EditText) findViewById(R.id.searchbox);
searchBox.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
//if the enter key was pressed, then hide the keyboard and do whatever needs doing.
InputMethodManager imm = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchBox.getApplicationWindowToken(), 0);
//do what you need on your enter key press here
return true;
}
return false;
}
});
J'espère que cela aide tous ceux qui essaient de faire de même.
Utilisez le code ci-dessous au lieu de votre code
<EditText
Android:id="@+id/searchbox"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:lines="1"
Android:singleLine="true"
Android:scrollHorizontally="true"
Android:ellipsize="end"
Android:layout_weight="1"
Android:layout_marginTop="2dp"
Android:drawablePadding="10dp"
Android:background="@drawable/edittext"
Android:drawableLeft="@drawable/folder_full"
Android:drawableRight="@drawable/search"
Android:paddingLeft="15dp"
Android:hint="search..."/>
Comme Android:singleLine="true"
est maintenant Déprécié alors utilisez
Utilisez maxLines à la place pour modifier la présentation d'un texte statique et utilisez l'indicateur textMultiLine dans l'attribut inputType pour les vues de texte modifiables (si singleLine et inputType sont fournis, les indicateurs inputType remplacent la valeur de singleLine).
Ajouter cette ligne à votre edittext
Android: inputType = "text"
dans le fichier XML ajouter ces propriétés dans le texte d'édition
Android:maxLines="1"
Android:imeOptions="actionDone"
a travaillé pour moi.
Vous devez ajouter cette ligne dans votre EditText
Android:maxLines="1"
et une autre chose, n'oubliez pas de définir Android:inputType
(comme vous voulez, SMS, téléphone .., mais vous devez le définir)