美文网首页
Android基础:EditText不换行的问题

Android基础:EditText不换行的问题

作者: Jannonx | 来源:发表于2017-10-18 16:06 被阅读397次

一个入门级的问题:如何让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;
            }
        });

相关文章

网友评论

      本文标题:Android基础:EditText不换行的问题

      本文链接:https://www.haomeiwen.com/subject/tkleuxtx.html