web-dev-qa-db-ja.com

プログラムで複数行のEditTextを作成する

コードで複数行のEditTextを作成しようとしています。これは私が使用するものです:

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);

しかし、それはまだ1行になっています。

21
Ton

これはそれをするべきです

txt.setSingleLine(false);
txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
57

これを使用することもできます:

txt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_MULTI_LINE);
31
waqaslam

上記のすべての答えを組み合わせることが正しい答えでしたので、ここにあります:

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);
17
ahmadalibaloch

これをコードに含めます:

txt.setLines(maxlines);

maxlinesは、EditTextで許可する最大行数です。

3

最終的に私のために働いた組み合わせは:

answerView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);
answerView.setSingleLine(false);

少なくとも部分的に私はいくつかの異なるオプションを構成するためにsetInputTypeを使用していたため、他のいくつかの可能性よりも理にかなっています。

1
David Berry

私の電話では、imeOptionsとinputTypeを変更しても何も起こりません。 MovementMethodまたはscrollBarStyle、あるいはその両方を設定すると、コンポーネントのねじがひどくなり、ユーザーがテキストを選択できなくなります。 isVerticalScrollBarEnabledおよびisHorizo​​ntalScrollBarEnabledは何もしません。私ができる最善は使用することです

_txt.setSingleLine(false);
_

txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);は不要に思われます)しかし、これはひどいEditTextにスクロールバーを表示しません。最終的に私はあきらめ、複数行のEditTextが必要なときはいつでもレイアウトスニペットを増やしています。ここにレイアウトがあります:

_<?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"
/>
_

そして、ここに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)
_

Androidでの開発は非常に難しいです。

1
Martin Vysny

これを試して

txt.setLines(number of lines);
0
Ariel Magbanua

上記の提案に加えて、これを機能させることができない場合は、以下の追加パラメーターを設定することをお勧めします

texInput.setHorizontallyScrolling(false);
texInput.setHorizontalScrollBarEnabled(false);

プログラムでedittextの高さを変更する場合は、requestLayout()を呼び出してレイアウトもリクエストすることができます。

0
Raju