android如何使edittext中的文本完全固定行

use*_*ser 2 android android-edittext

我想允许使用只输入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"/>
Run Code Online (Sandbox Code Playgroud)

但是我仍然可以Enter在第五行之后按下

ali*_*aei 6

@Swayam你是对的,但这个解决方案有所改进:

1-更好的表现

如果您输入了7行(您的最大输入行),则在解决方案中输入2-然后按下输入顶行,最后一行将被删除,但在此解决方案中,"输入"键已被忽略.

 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;
            }
     });
Run Code Online (Sandbox Code Playgroud)


Swa*_*yam 5

您无法使用任何XML属性执行此操作.

maxlines表示maximum heightEditText的值,而不是输入行的数量.

但是,您可以实现自己的代码来检查行数.

以下不是我自己的代码,而是取自这个答案.

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;
        }
Run Code Online (Sandbox Code Playgroud)