【问题标题】:How to set edittext to show search button or enter button on keyboard?如何设置edittext以显示搜索按钮或键盘上的输入按钮?
【发布时间】:2011-09-25 15:33:01
【问题描述】:

如何设置EditText 在键盘上显示搜索按钮或输入按钮?

【问题讨论】:

    标签: android keyboard


    【解决方案1】:

    您可以使用 EditText 的 inputType 更改可用的键盘。

    <EditText android:inputType="number"/>
    

    XML documentation

    ...或...

    editText.setInputType(int);
    

    Code documentation

    【讨论】:

      【解决方案2】:

      使用代码编辑EditText属性

      <EditText android:imeOptions="actionSearch" />
      

      然后在您的 java 代码中执行此操作:

      editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
          @Override
          public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
              if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                  performSearch();
                  return true;
              }
              return false;
          }
      });
      

      【讨论】:

      • 工作正常。在搜索操作中调用 api。
      【解决方案3】:

      在您的布局中将输入法设置为“搜索”选项

       <EditText 
        android:imeOptions="actionSearch"
        android:inputType="text"/>
      

      在java代码中使用

      editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
          @Override
          public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
              if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                  performSearch();
                  return true;
              }
              return false;
          }
      });
      

      【讨论】:

      • 我必须为我的编辑文本设置 android:inputType="text" 才能完成这项工作
      • 是的,您需要添加 android:inputType="text" 以获得更高的 API 级别。 (我认为对于 ICS+)
      • 请记住,如果用户使用外部键盘,他们可能没有搜索按钮。如果您没有其他方式来执行搜索,您可能还需要检查 KeyEvent.KEYCODE_ENTER
      • 您应该在 Kotlin 中将 KeyEvent 设为可选,否则此代码将导致崩溃。参考:stackoverflow.com/questions/47849219/…
      【解决方案4】:

      以下过程描述了如何使用 ArrayAdapter 设置提供来自数组的建议的 AutoCompleteTextView:

      1 - 将 AutoCompleteTextView 添加到您的布局中。这是一个只有文本字段的布局:

      <?xml version="1.0" encoding="utf-8"?>
      <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" 
          android:id="@+id/autocomplete_country"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content" />
      

      2 - 定义包含所有文本建议的数组。例如,下面是在 XML 资源文件 (res/values/strings.xml) 中定义的国家名称数组:

          <?xml version="1.0" encoding="utf-8"?>
      <resources>
          <string-array name="countries_array">
              <item>Afghanistan</item>
              <item>Albania</item>
              <item>Algeria</item>
              <item>American Samoa</item>
              <item>Andorra</item>
              <item>Angola</item>
              <item>Anguilla</item>
              <item>Antarctica</item>
              ...
          </string-array>
      </resources>
      

      3 - 在您的 Activity 或 Fragment 中,使用以下代码指定提供建议的适配器:

      // Get a reference to the AutoCompleteTextView in the layout
      AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
      // Get the string array
      String[] countries = getResources().getStringArray(R.array.countries_array);
      // Create the adapter and set it to the AutoCompleteTextView 
      ArrayAdapter<String> adapter = 
              new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries);
      textView.setAdapter(adapter);
      

      这里,初始化了一个新的 ArrayAdapter,将 COUNTRIES 字符串数组中的每个项目绑定到一个 TextView,该 TextView 存在于 simple_list_item_1 布局中(这是 Android 提供的布局,为列表中的文本提供标准外观)。 然后通过调用 setAdapter() 将适配器分配给 AutoCompleteTextView。

      【讨论】:

        【解决方案5】:
          android:singleLine="true"
          android:imeOptions="actionSearch"
        

        【讨论】:

          【解决方案6】:

          让你的编辑文本像这样。

              <EditText
                  android:id="@+id/s_search"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:textColor="#000"
                  android:textSize="15dp"
                  android:imeOptions="actionSearch"
                  android:inputType="text"
                  android:hint="Enter search" />
          

          【讨论】:

            【解决方案7】:

            设置这两个字段以在键盘上显示搜索图标。

                        android:imeOptions="actionSearch"
                        android:imeActionLabel="@string/search"
            

            如果您需要对键盘搜索按钮单击执行一些操作,则必须添加以下代码。

                etSearch.setOnEditorActionListener((v, actionId, event) -> {
                    if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                          search();     // you can do anything
                        return true;
                    }
                    return false;
                });
            

            【讨论】:

              【解决方案8】:

              使用这个

              <EditText
                              android:id="@+id/editSearch"
                              android:layout_width="0dp"
                              android:layout_height="wrap_content"
                              android:imeOptions="actionSearch"
                              android:singleLine="true"
              

              必须在您的 xml 中添加 singleLine=true 希望我的回答能帮到你

              【讨论】:

                【解决方案9】:

                在 EditText 视图中设置此属性“imeOptions”:

                <EditText
                     android:imeOptions="actionSearch"
                     android:layout_width="match_parent"
                     android:inputType="text"
                     android:hint="Enter search"
                     android:layout_height="wrap_content"
                />
                

                【讨论】:

                  【解决方案10】:

                  KOTLIN 开发人员:

                  1. XML:

                          <androidx.appcompat.widget.AppCompatEditText
                              android:id="@+id/etSearch"
                              android:layout_width="match_parent"
                              android:layout_height="wrap_content"
                              android:fontFamily="@font/sans_medium"
                              android:imeOptions="actionSearch"
                              android:inputType="text" />
                  

                  2。类文件:

                  etSearch.setOnEditorActionListener(object : TextView.OnEditorActionListener {
                          override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
                              if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                                  //hide Keyboard
                                  //do search here
                                  return true
                              }
                              return false
                          }
                      })
                  

                  注意事项: 使用 imeOptions="actionSearch" ,不要忘记在 XML 中添加 inputType="text" 或任何您想设置为 inputType 的内容。否则您将无法在打开的键盘上看到搜索图标。

                  【讨论】:

                  • 有效,但我不需要输入类型文本
                  • @ArjunVerma 尝试使用不同的设备!
                  猜你喜欢
                  • 2023-04-03
                  • 2020-05-04
                  • 1970-01-01
                  • 2011-06-19
                  • 1970-01-01
                  • 2021-12-12
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多