2

5行だけ入力できるようにしたいので、これを試してみました

<EditText
    android:layout_below="@+id/tv_signup_descriptionError"
    android:id="@+id/et_signup_description"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dip"
    android:hint="@string/et_hint_enterDescription"
    android:singleLine="false"
    android:lines="5"
    android:gravity="top"
    android:scrollHorizontally="false"
    android:inputType="textMultiLine" 
    android:maxLines="5"/>

それでもEnter5行目以降は押すことができます

4

4 に答える 4

6

@Swayamあなたは正しいですが、このソリューションは改善されました:

1-パフォーマンスの向上

2-ソリューションで7行(最大入力行)を入力してからトップ行でEnterキーを押すと、最後の行が削除されますが、このソリューションでは「Enter」キーは無視されます。

 mEditText.setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if (keyCode == KeyEvent.KEYCODE_ENTER  && event.getAction() == KeyEvent.ACTION_DOWN) {

                    if ( ((EditText)v).getLineCount() >= 7 )
                        return true;
                    }

                return false;
            }
     });
于 2013-11-21T11:55:20.120 に答える
4

XML属性を使用してこれを行うことはできません。

maxlines入力行数ではなくmaximum height、EditTextのを表します。

ただし、独自のコードを実装して行数を確認することはできます。

以下は私自身のコードではありませんが、この回答から抜粋したものです。

mEditText.setOnKeyListener(new View.OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {

            // if enter is pressed start calculating
            if (keyCode == KeyEvent.KEYCODE_ENTER
                    && event.getAction() == KeyEvent.ACTION_UP) {

                // get EditText text
                String text = ((EditText) v).getText().toString();

                // find how many rows it cointains
                editTextRowCount = text.split("\\n").length;

                // user has input more than limited - lets do something
                // about that
                if (editTextRowCount >= 7) {

                    // find the last break
                    int lastBreakIndex = text.lastIndexOf("\n");

                    // compose new text
                    String newText = text.substring(0, lastBreakIndex);

                    // add new text - delete old one and append new one
                    // (append because I want the cursor to be at the end)
                    ((EditText) v).setText("");
                    ((EditText) v).append(newText);

                }
            }

            return false;
        }
于 2013-02-03T12:06:04.080 に答える
1

maxLines属性は、EditTextの高さを制限するためのものです。最大行数を制限するには、コードで自分で行う必要があります。

于 2013-02-03T12:04:45.673 に答える
0

/**MAX_LINES設定します*/

  public void afterTextChanged(Editable editable) {
        int lines = mEditText.getLineCount();
        if (lines > MAX_LINES) {
            String s = editable.toString();
            int start = mEditText.getSelectionStart();
            int end = mEditText.getSelectionEnd();

            if (start == end && start < s.length() && start > 1) {
                s = s.substring(0, start - 1) + s.substring(start);
            } else {
                s = s.substring(0, s.length() - 1);
            }

            mEditText.setText(s);
            mEditText.setSelection(mEditText.getText().length());
            // Toast.makeText(RatingActivity.this, "max line set to MAX_LINES", Toast.LENGTH_SHORT).show();
  }

このコードは、EditTextの最大行数の制限をMAX_LINESに設定するために機能します。

于 2016-12-22T13:30:31.353 に答える