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在第五行之后按下
@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)
您无法使用任何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)
| 归档时间: |
|
| 查看次数: |
10620 次 |
| 最近记录: |