Android基础:EditText不换行的问题
2017-10-18 本文已影响397人
Jannonx
一个入门级的问题:如何让EditText只显示一行,无法使用软键盘的回车键换行?
EditText的xml布局文件里面有很多有关于行数的属性:
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/marginNormal"
android:background="@color/white"
android:ellipsize="end"
android:imeOptions="actionSearch"
android:gravity="start|center_vertical"
android:maxLines="1"
android:lines="1"/>
除了已经过时的singleLines属性,现在还有maxLines和Lines属性可以设置。
然而你会发现,即使同时设置了maxLines=”1”和lines=”1”,你的EditText依然是可以换行的。
加上一条属性:
android:inputType="text"
也还是不行。
尝试使用AutoCompleteTextView替换EditText
<AutoCompleteTextView
android:id="@+id/sogou_et_lysearch"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="9"
android:layout_centerVertical="true"
android:background="@null"
android:completionThreshold="1"
android:gravity="center_vertical"
android:paddingLeft="10sp"
android:cursorVisible="true"
android:textCursorDrawable="@drawable/et_search_cursorcolor"
android:imeOptions="actionSearch"
android:singleLine="true"
/>
其关键作用的是android:imeOptions="actionSearch",软键盘的回车键被替换成搜索图样的按钮
然后添加搜索按钮的监听,不然点击软件会崩溃,如下
D/AndroidRuntime: Shutting down VM
E/CrashHandler: In thread: Thread[main,5,main]
UncaughtException detected: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.KeyEvent.getKeyCode()' on a null object reference
at com.bxd.filesearch.module.search.SearchNetActivity$8.onEditorAction(SearchNetActivity.java:329)
at android.widget.TextView.onEditorAction(TextView.java:4637)
at com.android.internal.widget.EditableInputConnection.performEditorAction(EditableInputConnection.java:146)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:304)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5667)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:962)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
添加搜索按钮的监听,正常工作
footer_edit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == KeyEvent.KEYCODE_ENTER) {
return true;
} else if (actionId == EditorInfo.IME_ACTION_SEARCH) {
//这是监听搜索按钮
secondSearch();
}
return false;
}
});