当前位置: 首页 > 知识库问答 >
问题:

Android: AutoCompleteTextView隐藏软键盘

单于楚
2023-03-14

我有一个AutoCompleteTextView,它像往常一样在用户键入3个字母后提供建议。一旦我触摸建议列表,我想隐藏软键盘一次。我在下面用表格布局所做的只是在单击除建议列表之外的任何地方时隐藏键盘。

可扩展置标语言

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center" >

    <AutoCompleteTextView
        android:id="@+id/auto_insert_meds"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="15"
        android:inputType="textVisiblePassword|textMultiLine"
        android:scrollHorizontally="false"
        android:text=""
        android:textSize="16sp" />
</TableRow>

爪哇岛

TableLayout tbl = (TableLayout) findViewById(R.id.main_table);
tbl.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        in.hideSoftInputFromWindow(v.getWindowToken(), 0);
        return true;
    }
});

用于自定义列表的 XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/medlist_linear_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

        <TextView
        android:id="@+id/med_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollHorizontally="false"
        android:padding="3dp"
        android:textColor="@android:color/white" />

</LinearLayout>

共有3个答案

郎睿
2023-03-14

1)将“自动完成”文本视图下拉列表高度更改为MATCH_PARENT

setDropDownHeight(LinearLayout.LayoutParams.MATCH_PARENT);

2) 通过覆盖自动完成文本视图适配器的 getView() 来消除软键盘

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View v = super.getView(position, convertView, parent);
    v.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                InputMethodManager imm = (InputMethodManager) getActivity()
                        .getSystemService(
                                Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(
                        typeTextView.getWindowToken(), 0);
            }

            return false;
        }
    });

    return v;
}
颜森
2023-03-14

正如chakri Reddy所建议的:

它对我有用,我刚刚替换了它。

这:

 in.hideSoftInputFromWindow(arg1.getWindowToken(), 0);

与:

 in.hideSoftInputFromWindow(arg1.getApplicationWindowToken(), 0);
柯伟志
2023-03-14

使用 OnItemClickListener.希望这能:)

AutoCompleteTextView text = (AutoCompleteTextView) findViewById(R.id.auto_insert_meds);

text.setOnItemClickListener(new OnItemClickListener() {

  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    in.hideSoftInputFromWindow(arg1.getWindowToken(), 0);

  }

});

更新

用这个

in.hideSoftInputFromWindow(arg1.getApplicationWindowToken(), 0);

而不是-

in.hideSoftInputFromWindow(arg1.getWindowToken(), 0);
 类似资料:
  • 我需要隐藏软键盘以响应单击按钮。我看到了一些关于这方面的帖子,我尝试了: 这很有效。但现在我有两个EditText视图。无论选择了哪个EditText,现在如何隐藏软键盘?我也试过了 ,但那不起作用... 谢谢你的帮助! 编辑:找到解决方案。贴在下面。

  • 问题内容: 我正在为优惠券公司开发前端站点,并且我有一个页面,用户只需要输入电话号码和花费的$$。我们想出了一个有趣的内置Java脚本的屏幕键盘,该键盘易于使用且速度很快。但是,我正在寻找一种解决方案,以防止用户聚焦并在这些字段中输入文本/数字时弹出软键盘。 我知道HTML5提出的“数字/电话/电子邮件”类型属性。但是,冒着听起来发疯的风险,我真的只想使用屏幕键盘即可。 注意:此网站主要针对平板电

  • 我试图防止在SearchView上调用requestFocus()后键盘出现,但在Android8上没有解决方案。 我试过: /*3/ /*4/ onGlobalLayout()工作,但软键盘显示了近0.5秒后消失。 即使在调用requestFocus()之后,是否可以帮助隐藏软键盘?

  • 使用操作栏导航加载第二个片段后 重新加载另一个片段,动作栏仍然是visibile 我用一个测试项目用最小的代码加载片段,行为是一样的,分裂条被软键盘隐藏。我怎样才能使它从一开始就显示拆分条?

  • 我已经搜索了半打其他答案,但没有找到一个有效的答案。我只是想在用户按下回车键时关闭软键盘。(相当于极其简单的iOS“辞职键盘”通话。)在下面的代码中,不会调用onEditorAction方法。我在XML文件中设置了EditText视图,片段中的代码如下: 下面是XML文件中的一个片段,我在其中定义了EditText字段。我需要EditText多行。

  • 我有三个编辑文本字段。在这些字段中,我想只显示第一个字段的软输入键盘,并禁用后面两个字段,即日期和时间字段。 通过使用下面的代码,我可以禁用字段2和字段3的键盘,但当用户关注字段1时,键盘会出现,但当用户点击字段2或字段3时,键盘不会隐藏。虽然当第一次点击字段2或3时,不会出现键盘。 如果软输入键盘已打开,如何隐藏它?