3

テキスト領域の高さが複数行の EditText を持つことは可能ですか?ただし、テキストは実際にはラップされたテキストですが、新しい行の入力は禁止されています。私が考えることができる唯一の解決策は、ユーザーが新しい行を入力できるようにすることですが、キーを押すか、テキストが入力された後に改行文字をスペースだけに置き換えます。ここに私が持っているものがあります:

<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:singleLine="false"
    android:minLines="3"
    android:textSize="24sp" />
4

4 に答える 4

6

これは私が The Rideshare アプリで使用しているもので、うまく機能します。私のターゲット SDK は 17 (Android 4.0.3) です。

<EditText
            android:inputType="text|textMultiLine|textCapSentences"
            android:layout_margin="1dp"
            android:gravity="top"
            android:background="#FFEBCD"
            android:textSize="26sp"
            android:id="@+id/offer_notes"
            android:padding="10dp"
            android:textColor="#000"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:paddingLeft="5sp"
            android:hint="Notes, e.g. $10 per passenger, leaving early morning 7AM from Bay and Yonge intersection, no smoking or pets, please. Chevy Venture, very comfortable.">
        </EditText>   
于 2013-07-11T19:26:25.147 に答える
6

この場合、私にとって本当にうまくいった唯一のことはInputFilter、改行\nが入力されないようにする を追加することでした。

コード:

        editText.setFilters(new InputFilter[]{new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            if (source != null) {
                String s = source.toString();
                if (s.contains("\n")) {
                    return s.replaceAll("\n", "");
                }
            }
            return null;
        }
    }});

そして、私の構成からの興味深い行:

                <EditText

                ...

                android:singleLine="true"
                android:inputType="text|textMultiLine"
                android:imeOptions="actionDone"
                />

Enter キーを押したときに非表示にしてフォーカスを外したい場合EditTextは、上記のコードを次のように置き換えます。

        editText.setFilters(new InputFilter[]{new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            if (source != null) {
                String s = source.toString();
                if (s.contains("\n")) {
                    // Hide soft keyboard
                    InputMethodManager imm = (InputMethodManager)MainActivity.this.getBaseContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
                    // Lose focus
                    editText.clearFocus();
                    // Remove all newlines
                    return s.replaceAll("\n", "");
                }
            }
            return null;
        }
    }});
于 2016-01-10T09:32:03.987 に答える
-1
<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:lines="1"
    android:paddingBottom="250dp"
    android:text="You mean like this?"
    android:textSize="24sp" />
于 2013-02-26T08:06:15.517 に答える
-2

デフォルトでは、行がビューの幅に収まらない場合、新しい単語を折り返しますが、テキスト値に改行を追加しません。ユーザーは手動で「\n」記号を入力できますが。

ユーザーが好きなように入力できるようにし、EditText 値を使用する必要がある場合は、すべての '\n' を置き換えるだけでよいと思います。

于 2013-02-26T15:35:57.350 に答える