EditText如何仅允许通过语音从Gboard输入并通过键入禁用输入?

时间:2019-09-10 06:58:36

标签: android android-edittext

我有一个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>

enter image description here

0 个答案:

没有答案