imeOptions="actionSend" 在 material 设计中不工作
imeOptions="actionSend" not working in material design
我想在我的 inputText 键盘上应用发送操作,但我仍然看到默认箭头,而不是发送按钮。
我也尝试了几个不同版本的设备,但问题仍然存在。
XML:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout"
style="@style/AppEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen_16"
android:layout_marginEnd="@dimen/dimen_16"
app:counterMaxLength="9"
app:helperText="@string/idnow_landing_helper_text"
app:helperTextEnabled="true"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ-"
android:imeOptions="actionSend"
android:inputType="textCapCharacters"
android:maxLength="9"
android:textColor="@color/grayDark"/>
</com.google.android.material.textfield.TextInputLayout>
Activity:
override fun onCreate(savedInstanceState: Bundle?) {
...
findViewById<EditText>(R.id.edit_text).setOnEditorActionListener { v, actionId, event ->
return@setOnEditorActionListener when (actionId) {
EditorInfo.IME_ACTION_SEND -> {
//do things
true
}
else -> false
}
}
}
将 TextInputEditText 替换为以下内容
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:imeOptions="actionSend"
android:inputType="textCapCharacters"
android:maxLength="9"
android:textColor="@android:color/black"/>
您将在键盘上看到 SEND 按钮,并且还会在 activity 中收到回调。
让我知道更多帮助。
解决方法是添加:
android:singleLine="true"
结果:
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:imeOptions="actionSend"
android:inputType="textCapCharacters"
android:singleLine="true"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ-"
android:maxLength="9"
android:textColor="@android:color/black"/>
我想在我的 inputText 键盘上应用发送操作,但我仍然看到默认箭头,而不是发送按钮。 我也尝试了几个不同版本的设备,但问题仍然存在。
XML:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout"
style="@style/AppEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen_16"
android:layout_marginEnd="@dimen/dimen_16"
app:counterMaxLength="9"
app:helperText="@string/idnow_landing_helper_text"
app:helperTextEnabled="true"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ-"
android:imeOptions="actionSend"
android:inputType="textCapCharacters"
android:maxLength="9"
android:textColor="@color/grayDark"/>
</com.google.android.material.textfield.TextInputLayout>
Activity:
override fun onCreate(savedInstanceState: Bundle?) {
...
findViewById<EditText>(R.id.edit_text).setOnEditorActionListener { v, actionId, event ->
return@setOnEditorActionListener when (actionId) {
EditorInfo.IME_ACTION_SEND -> {
//do things
true
}
else -> false
}
}
}
将 TextInputEditText 替换为以下内容
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:imeOptions="actionSend"
android:inputType="textCapCharacters"
android:maxLength="9"
android:textColor="@android:color/black"/>
您将在键盘上看到 SEND 按钮,并且还会在 activity 中收到回调。
让我知道更多帮助。
解决方法是添加:
android:singleLine="true"
结果:
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:imeOptions="actionSend"
android:inputType="textCapCharacters"
android:singleLine="true"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ-"
android:maxLength="9"
android:textColor="@android:color/black"/>