J'essaie de créer un EditText multiligne par code. Voici ce que j'utilise:
EditText txt = new EditText(this);
lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1.0f);
txt.setLayoutParams(lp);
txt.setSingleLine(false);
txt.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
Mais c'est toujours dans une seule ligne.
Cela devrait le faire
txt.setSingleLine(false);
txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
Vous pouvez aussi utiliser ceci:
txt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_MULTI_LINE);
La combinaison de toutes les réponses ci-dessus était la bonne réponse, donc la voici:
texInput.setSingleLine(false);
texInput.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
texInput.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
texInput.setLines(5);
texInput.setMaxLines(10);
texInput.setVerticalScrollBarEnabled(true);
texInput.setMovementMethod(ScrollingMovementMethod.getInstance());
texInput.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
Incluez ceci dans votre code:
txt.setLines(maxlines);
maxlines sera le nombre maximum de lignes que vous souhaitez autoriser dans votre EditText.
La combinaison qui a finalement fonctionné pour moi était:
answerView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);
answerView.setSingleLine(false);
Au moins partiellement, j'utilisais setInputType
pour configurer plusieurs options différentes, ce qui était donc plus logique que d'autres.
Sur mon téléphone, modifier imeOptions et inputType ne fait rien; le paramétrage de movementMethod et/ou scrollBarStyle va visser le composant tellement mal que l'utilisateur ne pourra sélectionner aucun texte; isVerticalScrollBarEnabled et isHorizontalScrollBarEnabled ne font rien; le mieux que je puisse faire est d'utiliser
txt.setSingleLine(false);
(txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
semble être inutile) mais cela n’affiche aucune barre de défilement dans le fichu EditText. Finalement, j'ai abandonné et je gonfle un extrait de mise en page chaque fois que j'ai besoin d'un EditText multiligne. Voici la mise en page:
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:inputType="textMultiLine"
Android:lines="4"
Android:minLines="4"
Android:gravity="top|start"
Android:maxLines="4"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:scrollbars="vertical"
/>
Et voici l'extrait Anko:
fun ViewManager.multiLineEditText(@StyleRes theme: Int = 0, init: EditText.() -> Unit): EditText = ankoView(
{ ctx -> ctx.layoutInflater.inflate(R.layout.util_multilineedittext, this@multiLineEditText as ViewGroup, false) as EditText }, theme, init)
Le développement sur Android est nul.
Essaye ça
txt.setLines(number of lines);
En plus des suggestions ci-dessus - vous pouvez définir les paramètres supplémentaires ci-dessous si vous ne parvenez pas à obtenir ces résultats.
texInput.setHorizontallyScrolling(false);
texInput.setHorizontalScrollBarEnabled(false);
Si vous modifiez la hauteur de l'edittext par programme, vous pouvez également demander une mise en page en appelant requestLayout ().