android - 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>