首页 > 解决方案 > EditText如何允许仅通过语音从Gboard输入并通过键入禁用输入?

问题描述

我有一个 EditText,我想只允许用户通过语音输入,我想通过键盘输入来禁用输入,如下图所示。

在 EditText 中没有选项

android:inputType="voice"

然后我试了,

editText.setEnabled(false);

这个禁用了键盘的任何输入。

然后我尝试了

editText.setFocusable(false)

它不工作。

然后我想通过下面的键码尝试,

editText.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == KEYCODE_VOICE_ASSIST){
                    Log.d("Debug", "Voice Search is Enabled");
                    editText.setEnabled(true);
                    return true;
                } else {
                    editText.setEnabled(false);
                    return  false;
                }
            }
        });

由于我没有收到日志,看来 KEYCODE_VOICE_ASSIST 不适合识别语音输入。

任何其他建议将不胜感激。

我的xml,

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="@color/colorWhite"
    tools:context=".activity.VoiceSearchActivity">
 <EditText
        android:id="@+id/edittext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="10dp"
        android:layout_marginStart="10dp"
        android:layout_marginTop="45dp"
        android:clickable="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:hint="@string/voice_input"
        android:inputType="textNoSuggestions"
        android:paddingStart="10dp"
        android:textColor="@color/colorLightBlack"
        android:textColorHint="@color/colorDimGray"
        android:visibility="visible" />

    <Button
        android:id="@+id/btn_add"
        android:layout_width="80dp"
        android:layout_height="30dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="45dp"
        android:background="@drawable/voice_add_btn"
        android:text="@string/add" />


</RelativeLayout>

在此处输入图像描述

标签: androidandroid-edittext

解决方案


推荐阅读