我想允许使用进入仅有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"/>
但我仍可以按Enter
第五行之后
你可以这样做,使用任何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;
}
@Swayam你是对的,但这种方法有所改善:
1-更好的性能
2 -在你的解决方案,如果您输入7个系(你最大输入线),然后按下前行的最后一行将被删除输入,但是在这种解决方案“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;
}
});
该MAXLINES属性是限制的EditText的高度。 为了限制你必须做你自己的代码行的最大数量。
/ ** 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。