EditText会自动转到新行

Fra*_*ior 17 android android-edittext

我想EditText使用2的最大行数和最大长度为20.如果EditText长度大于10,它应该自动转到新行,这样用户就不需要按Enter键.有人可以帮我解决这个问题吗?

rkr*_*hit 29

将其添加到EditText xml代码中

安卓的inputType = "textMultiLine"

这将在输入数据时自动将文本移动到下一行.

  • 这不会向字符串添加 \n 字符。只是在 EditText 视图中换行,这不是OP所要求的。 (2认同)

fll*_*llo 19

它应该以最优雅的方式存在,但是这个解决方案可以帮助您作为实现您想要的线索.首先,您需要将EditText值设置如下:

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text|textMultiLine|textCapSentences"
    android:maxLength="21"
    android:gravity="left"
    android:maxLines="2" />  
Run Code Online (Sandbox Code Playgroud)

您必须将maxLength属性设置为,21因为enter char(新行)将在edittext中使用一个char,然后用户只能编写19chars而不是20.
然后,你应该使用TextWatcher一个boolean(如果用户删除他以前的字符使用),这应该是如下:

// init global boolean
private boolean isReached = false;

// in onCreate method
edittext.addTextChangedListener(new TextWatcher(){
    @Override
    public void afterTextChanged(Editable s) {
        // if edittext has 10chars & this is not called yet, add new line
        if(textEd.getText().length() == 10 && !isReached) {
            textEd.append("\n");
            isReached = true;
        }
        // if edittext has less than 10chars & boolean has changed, reset
        if(textEd.getText().length() < 10 && isReached) isReached = false;
    }
});  
Run Code Online (Sandbox Code Playgroud)

注意:但是,您应该小心使用此代码.实际上,用户仍然可以按下Key Enter然后添加新行.也许这些答案可能会帮助您处理它并让用户"只在路上":阻止在EditText上输入密钥但仍然将文本显示为多行


Lui*_*eri 0

对于线条,请执行以下操作:

<EditText
    android:inputType="textMultiLine" <!-- Multiline input -->
    android:lines="2" <!-- Total Lines prior display -->
    android:minLines="1" <!-- Minimum lines -->
    android:gravity="top|left" <!-- Cursor Position -->
    android:maxLines="2" <!-- Maximum Lines -->
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"/>
Run Code Online (Sandbox Code Playgroud)

你也可以使用这个参数(不适用于 Android <= 3.0):

android:singleLine="false"
Run Code Online (Sandbox Code Playgroud)

对于字符数,请执行以下操作:

EditText et= (EditText) findViewById(R.id.editText1);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(20); //Filter to 20 characters
et.setFilters(filters);
Run Code Online (Sandbox Code Playgroud)

或者,使用其他参数,

android:maxLength="20"在里面xml