美文网首页
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